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


Counts of two fields in different table with grouping not working

我在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 btable c

希望这能解决您的查询。