连接查询的问题

时间:2011-02-08 21:02:30

标签: sql join

我正在尝试选择与我的数据库中的帖子一起使用的所有标记,但出于某种原因,我只为每个有标记的帖子添加一个标记。

这是我正在使用的查询:

SELECT p.post_id, p.post_title, t.tag_id, t.tag_name
FROM posts p
LEFT JOIN posts_tags pt ON pt.post_id = p.post_id
LEFT JOIN tags t ON pt.tag_id = t.tag_id

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

每个帖子都可以有很多标签。我建议使用MySQL's GROUP_CONCAT()并将所有标记放入一个字段中。如果需要,您可以在脚本中解析该字段。

修改 您似乎仍然在标记表上加入,因此它只返回该标记的那一行。尝试切换ON子句中的表,以便它加入另一个方向。然后,您需要迭代结果(现在每个标记应该有一行。)我的原始解决方案将所有标记分组到一个字段中。

答案 1 :(得分:0)

这应该可以正常工作。事实上,因为它接近SO数据结构我使用data.stackexchange.com创建了一个,它工作得很好there