我有一张票证表显示多个演出日期。基本上看起来像这样...
+----+---------------+--------------+-----------+
| ID | ticket_holder | ticket_buyer | show_date |
+----+---------------+--------------+-----------+
ticket_holder和ticket_buyer都是用户ID
如果我想计算一个持票人的总票数,我可以按该持票人分组并计算行数,但是我想要更多的统计信息。
我想知道用户购买的门票总数,持有的门票数量以及购买的门票数量。
+------+---------+--------+-------+
| USER | HOLDING | BOUGHT | DATES |
+------+---------+--------+-------+
| 1 | 12 | 24 | 7 |
+------+---------+--------+-------+
| 2 | 3 | 4 | 2 |
+------+---------+--------+-------+
| 3 | 1 | 2 | 1 |
+------+---------+--------+-------+
是否有可能将所有这些都放入查询中,还是我需要做PHP东西才能实现?
答案 0 :(得分:1)
我会在多个查询中执行此操作。您无法在单个查询中根据需要 ticket_holder
或ticket_buyer
进行分组。如果您尝试GROUP BY ticket_holder, ticket_buyer
,它将按两个列分组,这不是您想要的。
SELECT ticket_holder, COUNT(*) AS tickets_held
FROM `a table of tickets` GROUP BY ticket_holder;
SELECT ticket_buyer, COUNT(*) as tickets_bought
FROM `a table of tickets` GROUP BY ticket_buyer;
SELECT ticket_buyer, COUNT(DISTINCT show_date) AS shows_bought
FROM `a table of tickets` GROUP BY ticket_buyer;
不是每个任务都必须在单个查询中完成!这是SQL设计的一部分,它应由某些应用程序语言使用,并且应该处理格式并在应用程序中显示。