MySQL - как выбрать записи в одной таблице , в которых значение "количество" больше чем сумма "количество" в другой таблице

Есть две таблицы MySQL с разной структурой связанные между собой некоторыми полями. В первой таблице есть поле "count" с которого берётся количество для другой таблицы и разбивается на части , и заносится в поле "count" в другую таблицу. Требуется выбрать из первой таблицы все значения в которых значение "count" ,больше чем сумма поля "count" в другой таблице.

введите сюда описание изображения

Требуется получить "part_id" которого №2


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

Автор решения: Akina
SELECT t1.*
FROM t1
LEFT JOIN (
    SELECT part_id, SUM(`count`) sum_count
    FROM t2
    GROUP BY 1
    ) t3 ON t1.part_id = t3.part_id AND t1.`count` <= t3.sum_count
WHERE t3.part_id IS NULL

Суть. Агрегируем и суммируем вторую таблицу. Затем результат связываем с первой по равенству part_id и условию, что сумма в первой - НЕ больше. Если это условие не выполняется, или если во второй таблице нет нужного part_id (типа сумма равна нулю, но на самом деле NULL), то на месте полей второй таблицы будет NULL. А именно такие записи нам и нужны.

fiddle

→ Ссылка