我有三个表A
,B
,C
。
A 表:
id,name
B 表:
id,a_id,date
C 表:
id,b_id,type(值是0/1)
我想通过使用具有A表ID的B表计数C.type = 1的C数据来打印所有A.name,A.id和C.counting数据
结果如下:
A.id A.name C.countingdata 1 abc 4 2 vfd 2 3 fdg 0
答案 0 :(得分: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
答案 1 :(得分:-1)
您可以找到以下查询:
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