我在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
答案 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 a
与table c
分开,将table b
与table a
分开。
即每个table b
的ID都会加入table c
和{{1}}。
希望这能解决您的问题。