SQL多联接和执行计数查询

时间:2018-11-28 18:38:01

标签: mysql sql database filemaker

所以我在FileMaker上有一个数据库,其数据库如下:

Table A (parent_idA)-------Table B(fk_parent_idA)
                                 (fk_parent_idC)-----------Table C(parent_idC)

我想执行一个查询,该查询将向我显示表A的记录中的field_A和表C中的相关记录的数量,条件是表C中的名为“状态”的字段的值为“完成”。

表A中没有与C相关的记录都已完成的任何记录都不应在查询中显示。

Table relationships

请帮助,谢谢!

3 个答案:

答案 0 :(得分:0)

尽管您的描述不清楚,但我相信inner join应该做到。

select table_a.field_a, count(table_c.id) 
from table_a inner join table_b on
table_a.id = table_b.table_a_id 
inner join table_c 
on table_c.id = table_b.table_c_id 
where table_c.status = "COMPLETE" 
group by table_a.field_a;

答案 1 :(得分:0)

此查询甚至不需要table_a

select b.parent_idA, count(*) 
from table_b b inner join
     table_c 
     on c.parent_idC = b.fk_parent_idC 
where c.status = 'COMPLETE' 
group by b.parent_idA;

答案 2 :(得分:0)

使用左侧的PLAN重新想象您的图表,每个计划都有一个联合体和状态。无需更改实际关系,只需移动表格即可使其更容易可视化。然后,我相信您想要的SQL是:

ExecuteSQL ( "

SELECT c.name, COUNT(s.id)
FROM CONSORTIUM c
JOIN PLANS p ON p.consortium_id = c.id
JOIN STATUSES s ON p.status_id = s.id
WHERE s.status = 'complete'
GROUP BY c.name
" ; "" ; "" )

我提供了一个演示文件的链接,该链接应该会有所帮助!

FM SQL Demo