Подсчитать количество записей и суммировать значения из нескольких связанных таблиц

Есть 4 таблицы между собой связанные. главной таблице sats хранится пользовательские данные. по полю sats.idподсчитать сколько пользователей зарегистрирован и сгруппировать по полью sats_id. sats_id связан с таблицей sum.id,(sats.id = sum.id). SELECT sum.name AS 'категория', COUNT(sats.sats_id) AS 'пользователи' FROM sats JOIN sum ON sats.sats_id = sum.id GROUP BY sum.name;. тут нужно еще одно поле суммировать, таблица dslam.dslamType_id. сгруппировать так же по полю sum.name

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

получается вот такой результат SELECT dslam.sats_id, SUM(dslamtype.name) FROM dslam JOIN dslamtype ON dslam.dslamType_id = dslamtype.id GROUP BY sats_id; получается вот такой результат введите сюда описание изображения

теперь нужно их объединить

ссылка на исходный код [https://www.mycompiler.io/view/Gg0d3jrzPSH]


Ответы (1 шт):

Автор решения: Akina

Получается вот так:

-- объединение
SELECT `sum`.name AS `категория`,
       COUNT(sats.id) AS `пользователи`,
       sums.`сумма`
FROM sats
JOIN `sum` ON sats.sats_id = `sum`.id
JOIN ( SELECT dslam.sats_id, SUM(dslamtype.name) `сумма`
       FROM dslam
       JOIN dslamtype ON dslam.dslamType_id = dslamtype.id
       GROUP BY dslam.sats_id ) sums ON sums.sats_id = sats.sats_id
GROUP BY `sum`.name, sums.`сумма`

fiddle с некоторыми пояснениями.

Проверьте логику.

→ Ссылка