从这个 post 得到正确答案后,我还有一个问题- 我必须进一步过滤该行,我必须确保标签必须标记到页面。
这是我的root_mm_tagged_pages 表
tag id pg_id
3 11
5 11
6 11
18 12
24 13
26 13
3 14
所以我想返回这个结果,
ParentID ParentName TotalChildren TotalTagged
3 Tagname-1 2 2
5 tagname-2 2 1
6 tagname-3 1 1
18 tagname-10 0 1
24 tagname-13 0 1
26 tagname-14 0 1
我尝试使用此查询,但出现错误 - #1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本对应的手册,了解在第 5 行的“COUNT(tagged.pg_id) AS TotalTagged FROM root_tags AS parents LEFT OUTER JOI”附近使用的正确语法
,
SELECT
parents.tag_id AS ParentID,
parents.tag_name AS ParentName,
COUNT(childs.tag_id) AS TotalChildren
COUNT( tagged.pg_id ) AS TotalTagged
FROM root_tags AS parents
LEFT OUTER JOIN root_tags AS childs
ON parents.tag_id = childs.parent_id
LEFT OUTER JOIN root_mm_tagged_pages AS tagged
ON tagged.tag_id = parents.tag_id
WHERE parents.parent_id IS NULL
GROUP BY parents.tag_id, parents.tag_name
ORDER BY parents.tag_id
如何修复它并进一步过滤结果?
最佳答案
TotalChildren
别名后缺少逗号。
SELECT
parents.tag_id AS ParentID,
parents.tag_name AS ParentName,
COUNT(childs.tag_id) AS TotalChildren , --You missed the comma here
COUNT( tagged.pg_id ) AS TotalTagged
FROM root_tags AS parents
LEFT OUTER JOIN root_tags AS childs
ON parents.tag_id = childs.parent_id
LEFT OUTER JOIN root_mm_tagged_pages AS tagged
ON tagged.tag_id = parents.tag_id
WHERE parents.parent_id IS NULL
GROUP BY parents.tag_id, parents.tag_name
ORDER BY parents.tag_id
关于php - sql 查询 : how to filter parent and children tags with a tagged table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6948537/