Объединить данные из нескольких таблиц - PullRequest
0 голосов
/ 29 марта 2019

Я хочу объединить данные из 4 разных запросов так что это мой запрос

SELECT dinas.dinas_id,dinas_nama, COUNT(sc_user.user_id) as total_user from dinas left JOIN sc_user on dinas.dinas_id=sc_user.dinas_id GROUP by dinas.dinas_id
UNION
SELECT dinas.dinas_id,dinas_nama, COUNT(sc_bidang.bi_id) as total_bidang from dinas left JOIN sc_bidang on dinas.dinas_id=sc_bidang.dinas_id GROUP by dinas.dinas_id
UNION
SELECT dinas.dinas_id,dinas_nama, COUNT(sc_kegiatan.ke_id) as total_kegiatan from dinas left JOIN sc_kegiatan on dinas.dinas_id=sc_kegiatan.dinas_id GROUP by dinas.dinas_id
UNION
SELECT dinas.dinas_id,dinas_nama, COUNT(sc_paket.ke_id) as total_paket from dinas left JOIN sc_kegiatan on dinas.dinas_id=sc_kegiatan.dinas_id left join sc_paket on sc_paket.ke_id=sc_kegiatan.ke_id GROUP by dinas.dinas_id

но результаты будут такими

enter image description here

но я хочу получить такие результаты

dinasid | dinas_nama | total_user | total_bidang | total_kegiatan| total_paket

Может быть, кто-то может помочь мне объединить эти данные?

это моя скрипка https://www.db -fiddle.com / ж / tgohmvPrFnbNz8VgezbsFA / 0

(количество) результаты должны быть такими enter image description here enter image description here

1 Ответ

2 голосов
/ 29 марта 2019

Все ваши группы выражений на dinas.dinas_id, поэтому сумма левого объединения заканчивается как:

SELECT dinas.dinas_id,
       dinas_nama,
       COUNT(DISTINCT sc_user.user_id) as total_user,
       COUNT(DISTINCT sc_bidang.bi_id) as total_bidang,
       COUNT(DISTINCT sc_kegiatan.ke_id) as total_kegiatan,
       COUNT(DISTINCT sc_kegiatan.ke_id, sc_paket.pa_id) as total_paket
FROM dinas
LEFT JOIN sc_user on dinas.dinas_id=sc_user.dinas_id
LEFT JOIN sc_bidang on dinas.dinas_id=sc_bidang.dinas_id
LEFT JOIN sc_kegiatan on dinas.dinas_id=sc_kegiatan.dinas_id
LEFT JOIN sc_paket on sc_paket.ke_id=sc_kegiatan.ke_id
GROUP by dinas.dinas_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...