Php 如何找到每个页面的所有标签,然后将标签合并到一列中?

Php 如何找到每个页面的所有标签,然后将标签合并到一列中?,php,mysql,tagging,group-concat,concat,Php,Mysql,Tagging,Group Concat,Concat,如何找到每个页面的所有标记,然后将标记合并到一列中 比如, 页数表 page_id 1 2 3 4 标签表 tag_id tag_name 1 A 2 B 3 C 4 D 带标签的桌子 page_id tag_id 1 1 1 2 1 3 3 2 3 3 我的工作问题 SELECT p

如何找到每个页面的所有标记,然后将标记合并到一列中

比如,

页数表

page_id 
1
2
3
4
标签表

tag_id      tag_name
1           A
2           B
3           C
4           D
带标签的桌子

page_id     tag_id
1           1
1           2
1           3
3           2
3           3
我的工作问题

SELECT
    p.page_id,
    GROUP_CONCAT(t.tag_name ORDER BY t.tag_name ASC SEPARATOR ",") AS tags

FROM root_pages AS p

LEFT JOIN root_mm_pages_tags AS m
ON p.page_id = m.page_id

LEFT JOIN root_tags AS t
ON t.tag_id = m.tag_id

WHERE p.page_id = t.page_id
这是我追求的结果

page_id         tags
1               A, B, C
2               NULL
3               B, C
4               NULL

在p.page_id=tt.page_id和p.page_id=t.page_id中不使用
进行尝试;也要使最后一个连接成为常规连接,以提高性能

SELECT
    p.page_id,
    GROUP_CONCAT(t.tag_name ORDER BY t.tag_name ASC SEPARATOR ",") AS tags

FROM root_pages AS p

LEFT JOIN root_mm_pages_tags AS m
ON p.page_id = m.page_id

JOIN root_tags AS t
ON t.tag_id = m.tag_id

GROUP BY p.page_id

+1感谢您以正确的方式进行多对多操作。感谢NullUserException!:-)对不起,我错了。毕竟,快到周末了。。。哦,等等。我尝试了你的答案,但它只返回一行,在
标记的列中有重复的标记:(@lauthiamkok我们可以看到你的表的转储,这样我们就有一些数据可以测试了吗?哦,我通过在查询
分组by p.page\u id
:-)的末尾添加这一行来实现它