データベースからニュース記事を取得し、それに関連するアイテムも取得しようとしています。データベース構造は次のようになります。
news (id, article )
newsItemsRelation (id, newsId, itemId)
newsAuthorRelation (id, newsId, userId)
items (id, itemTitle )
次に、アイテムとユーザーのデータのテーブルもあります。
以下のクエリを実行すると、同じ記事に複数の著者がいる場合はアイテムが重複し、同じ記事に複数のアイテムがある場合は著者が重複します。
SELECT
article,
GROUP_CONCAT(name) AS author,
GROUP_CONCAT(itemTitle) AS item
FROM news
LEFT JOIN newsItemsRelation ON
newsItemsRelation.newsId = news.id
LEFT JOIN items ON
items.id = newsItemsRelation.itemId
LEFT JOIN newsAuthorsRelation ON
newsAuthorsRelation.newsId = news.id
LEFT JOIN profiles ON
profiles.id = newsAuthorsRelation.userId
GROUP BY news.id
編集1
私の結果は次のようになります。
記事: ここに記事が入ります
著者: ウォルター ホワイト、デクスター モーガン、ウォルター ホワイト、デクスター モーガン
アイテム: ブレイキング・バッド、デクスター、ブレイキング・バッド、デクスター
編集2
複数のアイテムが同じ itemTitle でも異なる ID を持つ可能性があるため、OR を実行しても問題は解決しませんGROUP_CONCAT(DISTINCT name)
。GROUP_CONCAT(DISTINCT itemTitle)
著者についても同様です。つまり、私の結果は「デクスター、デクスター」のように見えるかもしれませんが、今は「デクスター、デクスター、デクスター、デクスター」のように見えます