如何计算每个类别的门票? 主要类别应包括每个子类别票证。
表:
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
答案 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来同时拥有它们