php - sql 查询 : how to filter parent and children tags with a tagged table?

标签 php mysql sql parent-child tagging

从这个 post 得到正确答案后,我还有一个问题- 我必须进一步过滤该行,我必须确保标签必须标记到页面。

这是我的root_mm_tagged_pa​​ges 表

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/

相关文章:

mysql - 使用 where 子句查找与另一个 col 的最小值关联的值

php 在每第三个结果后插入图像

php - 用户对用户网络聊天应用程序 (PHP) - 什么选择?

php - 尝试将旧的 mysql_query 转换为新的 PDO 方法,如何创建变量元素

MySQL 查询执行时间较长

sql - 如何从 SQL Server 2014 中的选择查询将数据分配给用户定义的表类型

sql - 如果引用存在则连接表

c# - Linq to SQL 按 2 个实体(父子)中的字段排序

php在if else语句中发布数据

PHP foreach 在迭代查询结果时不起作用