MySQL - как выбрать записи в одной таблице , в которых значение "количество" больше чем сумма "количество" в другой таблице
Есть две таблицы MySQL с разной структурой связанные между собой некоторыми полями. В первой таблице есть поле "count" с которого берётся количество для другой таблицы и разбивается на части , и заносится в поле "count" в другую таблицу. Требуется выбрать из первой таблицы все значения в которых значение "count" ,больше чем сумма поля "count" в другой таблице.
Требуется получить "part_id" которого №2
Ответы (1 шт):
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. А именно такие записи нам и нужны.