Объединить данные из нескольких таблиц

Я хочу объединить данные из 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

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

Объединить данные из нескольких таблиц

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

dinasid | dinas_nama | total_user | total_bidang | total_kegiatan| total_paket

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

это моя рабочий пример https://www.db-fiddle.com/f/tgohmvPrFnbNz8VgezbsFA/0

(количество) результаты должны быть такими Объединить данные из нескольких таблицОбъединить данные из нескольких таблиц

Если вы не можете получить какой-либо другой точный ответ, вы можете использовать подзапрос, чтобы получить желаемый результат.

Manthan Patel 29.03.2019 05:18
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Все ваши выражения группируются по 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

результаты (*count) не такие, как ожидалось.

AdityaDees 29.03.2019 05:28

я редактирую свой вопрос и добавляю скрипку и результаты, если я использую один запрос для тестирования

AdityaDees 29.03.2019 05:39

Спасибо, это очень помогло. total_paket нуждается в ближайшей повторной проверке (это 2 соединения), так как я думаю, что даже в вашем вопросе COUNT(sc_paket.pa_id) as total_paket имелось в виду.

danblack 29.03.2019 06:09

Другие вопросы по теме