需要MySQL递归查询/语句

时间:2013-12-04 19:22:27

标签: mysql recursion

如何计算每个类别的门票? 主要类别应包括每个子类别票证。

表:

ticket(id, category_id)
category(id, name, parentcategory_id) 

我需要一个MySQL查询。 MySQL和这个表结构有可能吗?如果没有,怎么样?

示例数据:

ticket(1,1); 
ticket(2,2); 
ticket(3,3);
ticket(4,2);

category(1, 'Hardware', NULL)
category(2, 'Printer', 2)
category(3, 'Software', NULL)

所以我有:

Software - 1 Ticket
Printer - 2 Tickets
Hardware - 1 Main Ticket, 2 Sub Tickets = 3 Tickets

1 个答案:

答案 0 :(得分:0)

尝试

SELECT C.name AS 'Category', COUNT(ticket.id) AS 'Ticket Count'  
FROM ticket
JOIN category AS C ON C.id = ticket.category_id
GROUP BY C.name

此查询根据公共字段(类别表的category_id外键)将两个表连接在一起,并计算每个类别的所有票证。 GROUP BY对聚合函数进行分组。 要根据您的评论查找子类别,请使用此查询

    SELECT C.name AS 'Sub-Category', COUNT(ticket.id) AS 'Ticket Count'  
    FROM ticket
    JOIN category AS C ON C.id = ticket.category_id
WHERE C.categoryparentid IS NULL
    GROUP BY C.name

你可以使用union来同时拥有它们