如何对表a的每个数据计数表数据

时间:2019-04-11 14:56:13

标签: laravel model controller laravel-5.6

我有三个表ABC

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

2 个答案:

答案 0 :(得分:0)

  • 好吧,您可以先内部连接BC,执行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