我在mysql中有三个表a,b和c.A有事件,B有A的每个事件的门票类别,C有B的每个门票。所以一个纯粹的关系数据库。我想找出的是每个事件的总门票类别和总门票的数量。
我试过这样的:
选择 a. * , COUNT( b.at_id ) AS totTktCat, COUNT( c.bt_id ) AS totTkts从 a_table A加入b_table b使用 ( at_id )加入c_table c使用 ( bt_id )按a.at_id分组
但没有运气,总数是错误的。
来自 mysql 大师的一点帮助会有所帮助。
我添加了一个sql小提琴:http://sqlfiddle.com/#!9/ec8b0/1。
我像这样变得完全
at_id at_cat at_event totTktCat totTkts1 1 aevent1 6 62 2 aevent2 2 2这是错误的。
我的预期输出是
at_id at_cat at_event 计数 (bt_ticktgrp) 计数 (ct_tickets)2 2 aevent2 2 4对于 sql 小提琴:http://sqlfiddle.com/#!9/ebc9ea6
根据你给出的描述,我写了这样的查询。
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
的每个id,它都连接table b
和table c
。
希望这能解决您的查询。