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
:-)的末尾添加这一行来实现它