不同表中两个字段的计数,分组不起作用

时间:2016-01-14 11:07:33

标签: php mysql count group-by

我在mysql中有三个表a,b和c。 a有事件,b有a的每个事件的票类,c有b的票。所以一个纯粹的关系数据库。我试图找出的是每个活动所拥有的总票数类别和总票数。

我曾经这样试过:

SELECT a. * , COUNT( b.at_id ) AS totTktCat, COUNT( c.bt_id ) AS totTkts
FROM a_table a
JOIN b_table b
USING ( at_id ) 
JOIN c_table c
USING ( bt_id ) 
GROUP BY a.at_id

但没有运气,总数是错误的。

来自mysql专家的一点帮助会有所帮助。

我添加了一个sql小提琴:http://sqlfiddle.com/#!9/ec8b0/1

我得到的总数是这样的

at_id   at_cat  at_event    totTktCat   totTkts
1       1       aevent1     6           6
2       2       aevent2     2           2
这是错误的。

我的预期输出是

at_id at_cat at_event COUNT(bt_ticktgrp) COUNT(ct_tickets)
2     2      aevent2  2                  4
对于sql小提琴:http://sqlfiddle.com/#!9/ebc9ea6

1 个答案:

答案 0 :(得分:1)

根据您的描述,我写了这样的查询..

SELECT a.at_id,a.at_cat,a.at_event,count(*) as bt_ticktgrp,(SELECT count(*) FROM `b_table` b JOIN `c_table` c ON c.bt_id=b.bt_id where b.at_id=a.at_id) as ct_tickets  FROM `a_table` a JOIN `b_table` b
ON a.at_id=b.at_id
GROUP BY a.at_cat;

我将table atable c分开,将table btable a分开。

即每个table b的ID都会加入table c和{{1}}。

希望这能解决您的问题。