PHP と MySQL でソーシャル メディア ニュース集約 Web アプリを構築しています。さまざまな URL (列 url) を特定の傾向 (列 trend_id) にマップする必要があります。これが私のダミーデータ構造です:
特定の trend_id (たとえば 12) の URL を取得するクエリを作成する必要があります。これは簡単です:
SELECT
url
FROMurl_table
WHEREtrend_id
= '12'
現在、一部のトレンドは特定の親トレンドに関連しています。たとえば、trend_id 12、16、および 45 は、親の trend_id 12 に関連付けられています。したがって、ここに私のクエリを示します。
SELECT '12' as
parent_trend_id
,url
FROMurl_table
WHERE (trend_id
= '12' ORtrend_id
= '16' ORtrend_id
= '45')
同様のクエリの別の例を次に示します。
SELECT '345' as
parent_trend_id
,url
FROMurl_table
WHERE (trend_id
= '345' ORtrend_id
= '457' ORtrend_id
= '16')
問題は、トレンド間にこのような親子関係が複数存在することです。今のところ、PHP 内で for ループを実行し、複数のクエリを実行しています。また、私のアプリの性質上、親トレンドをこの表に含めることはできません。複数のそのようなクエリをクラブする単一のクエリを持つ方法はありますか?
編集:
子関係を定義する別のテーブルがあります。これは、ID、trend_id (親) および related_trend_id (子) を持つ単純な 3 列のテーブルです。ただし、1 つの related_trend_id (子) が複数の trend_id (親) を持つことができます。リレーション テーブルのスナップショットを次に示します。