Как посчитать таблицу данных для каждой таблицы данных - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть три таблицы A, B, C.

A Таблица:

id, имя

B таблица:

id, a_id, дата

C таблица:

id, b_id, type (значение 0/1)

Я хочу напечатать все A.name, A.id и C.countingdata путем подсчета данных C, где C.type= 1 с использованием таблицы B с идентификатором таблицы A

Результат выглядит следующим образом:

A.id   A.name       C.countingdata
1      abc          4
2      vfd          2
3      fdg          0

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019
  • Что ж, вы можете сначала выполнить внутреннее объединение 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
0 голосов
/ 11 апреля 2019

Вы можете найти запрос, как показано ниже:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...