这是我的表/实体:
articles
- id
- title
- body
keywords
- id
- fk_article_id
- title
一篇文章可以有多个关键字(一对多关系,多对多关键)。属于一篇文章的关键字可以是1,2,3,4,5,6,7,8,9 ......关键字。
选择1篇文章的标题和正文以及所有关键字的标题的最佳方法是什么?
结果示例:
- article.title
- article.body
-- keyword1.title
-- keyword2.title
-- keyword3.title
如果我进行INNER JOIN,那么我会获得相同的文章标题和正文两次。这可以用GROUP BY完成,还是应该使用NESTED语句?
我试过的INNER JOIN,但显然不是正确的解决方案:
SELECT articles.title, articles.body, keywords.title
FROM articles
INNER JOIN keywords
ON articles.id = keywords.fk_article_id
WHERE articles.id = 1
答案 0 :(得分:2)
对于样本,假设你有
articles
id | title | body
---- ----- -----
1 | Harry Potter | text
2 | LOTR | text text
keywords
id | title
---- -----
1 | magic
1 | stick
2 | dwarf
2 | ring
如果执行以下查询
Select a.title,a.body,group_concat(k.title ) from articles a JOIN keywords k ON a.id=k.id group by a.id
它会回来 哈利波特,(魔术,棒) LOTR,(侏儒,环)