我正在尝试从我的数据库中获取一些新闻文章,并使用它获取相关项目。数据库结构如下所示:
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
做GROUP_CONCAT(DISTINCT name)
ORGROUP_CONCAT(DISTINCT itemTitle)
并不能解决我的问题,因为多个项目可以具有相同的 itemTitle 但不同的 ID。作者也是如此。这意味着我的结果可能看起来像“Dexter,Dexter”,但现在看起来像“Dexter,Dexter,Dexter,Dexter”