所以我在FileMaker上有一个数据库,其数据库如下:
Table A (parent_idA)-------Table B(fk_parent_idA)
(fk_parent_idC)-----------Table C(parent_idC)
我想执行一个查询,该查询将向我显示表A的记录中的field_A和表C中的相关记录的数量,条件是表C中的名为“状态”的字段的值为“完成”。
表A中没有与C相关的记录都已完成的任何记录都不应在查询中显示。
请帮助,谢谢!
答案 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
" ; "" ; "" )
我提供了一个演示文件的链接,该链接应该会有所帮助!