我有一个表articles
,另一tags
,第三个被称为article_tags
。我想制作一个列出特定标签的所有文章的页面。获取所有文章与他们的标签GROUP_CONCAT字段
我的查询看起来是这样的:
SELECT headline, GROUP_CONCAT(tags.tag_name) AS all_tags FROM articles
LEFT JOIN articles_tags ON articles.article_id = articles_tags.article_id
LEFT JOIN tags ON articles_tags.tag_id = tags.tag_id
WHERE tags.tag_name = 'japan'
GROUP BY articles.article_id
所有返回的文章只有japan
作为标记,即使有问题的文章有几个标签。
这显然与WHERE
条款有关,但我无法弄清楚如何在这里做我想做的事情 - 理想情况下,我最终会得到一个像japan,china,korea
这样的列表。这是子查询的地方吗?可以做一个SQL大师建议。
谢谢, 马特
在您的查询中,您引用了tags表中的三个不同列:'tags.tag_id','tags.tag_name'和'tag ='japan''。这是一个错误吗?你可以发布你的表格定义来帮助澄清这一点吗? – 2010-08-26 20:24:31
Hi Mark - 是的,oops - 'tag ='japan'应该读为'tag_name ='japan' - 为了这个例子我简化了表格定义。我只是在下面尝试你的代码,所以看看这个空间。 – 2010-08-26 20:26:37