我有三张桌子A
,B
,C
。
一张桌子:
ID,名称
B表:
ID,A_ID,日期
C表:
id,b_id,type(值为0/1)
我想打印所有A.name,A.id和C.countingdata通过计算C数据,其中C.type = 1使用B表,其中有一个表ID
结果如下所示:
A.id A.name C.countingdata 1 abc 4 2 vfd 2 3 fdg 0
B
和C
,做group by
并使用C.countingdata
获得count()
。另一个与B
本身在子查询上的连接,以容纳结果集中的a_id
。A
和上面的子查询之间进行内部联接以获得结果。SQL:
select A.id, A.name, derived.countingData
from A
inner join (
select B.id as b_id,B.a_id,sub_data.countingData
from B
inner join (
select B.id,count(B.id) as countingData
from B
inner join C
on B.id = C.b_id
where C.type=1
group by B.id
) sub_data
on B.id = sub_data.id
) derived
on A.id = derived.a_id
您可以找到如下查询:
Select
A.id
,A.name
,COUNT(C.id)
FROM A
JOIN B ON A.id = B.a_id
JOIN C ON B.id = C.b_id ANd C.type = 1
GROUP BY
A.id
,A.name