SQL multi join и выполнение запроса Count - PullRequest
0 голосов
/ 28 ноября 2018

Итак, у меня есть база данных в FileMaker со следующей моделью ниже:

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

Я хочу выполнить запрос, который покажет мне field_A из записей таблицы A и количество связанных записей из таблицы Cс условием, что поле с именем 'status' в таблице C имеет значение 'complete'.

Любые записи записей из таблицы A, не имеющие связанных записей из C, которые являются полными, не должны отображаться в запросе.

Table relationships

Пожалуйста, помогите, спасибо!

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Вам даже не нужно 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;
0 голосов
/ 29 ноября 2018

Пересмотрите свой график с ПЛАНАМИ слева, у каждого плана есть консорциум и статус.Не нужно менять фактические отношения, просто перемещайте таблицы, чтобы упростить визуализацию.Тогда, я полагаю, вам нужен 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

0 голосов
/ 28 ноября 2018

Хотя ваше описание не ясно, я считаю, что 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;
...