Как сделать переменную в JOIN-е и использовать в HAVING?

110
27 июня 2021, 05:30

Есть таблица:

Надо вывести название товара и итоговое количество каждого товара, оставшееся на складе, итоговое количество которого не менее исходного (за исходное считать первое поступление на склад) с сортировкой по итоговому количеству по убыванию.

Результат должен быть таким:

Я сделал такой запрос:

SELECT name, SUM(count) AS coount FROM `store`
LEFT JOIN `storetrans`
ON store.id = storetrans.id
GROUP BY name
HAVING SUM(count) < (SELECT `count` FROM `storetrans` WHERE `id` = 3 LIMIT 1)

И это работает, но только он берет первое значение НОЖНИЦЫ (я сам добавил id=3) для всех вещей. А мне надо для каждого свой ID брал, вместо ID НОЖНИЦЫ (ID=3). Как можно сделать это ID динамичным?

Answer 1

Нашел ответ на собственный вопрос. ПО больше прочитал как работает GROUP BY и HAVING.

SELECT store.id, store.name, SUM(storetrans.count) AS coount FROM `store`
LEFT JOIN `storetrans` ON store.id = storetrans.id
GROUP BY name
HAVING SUM(count) >= (
    SELECT `count`
    FROM `storetrans`
    WHERE `id` = store.id
    GROUP BY `id`
    HAVING MAX(`date`)
)
ORDER BY coount DESC

Спасибо Mike-у за подсказку!

READ ALSO
setMeta не устанавливает новые значения?

setMeta не устанавливает новые значения?

Добрый день есть такие файлы

120
Как сохранить порядок подстрок? (React+PHP)

Как сохранить порядок подстрок? (React+PHP)

Задача "Как сохранить порядок отображения подстрок"!

107
Docker: invalid reference format

Docker: invalid reference format

Всем приветТолько начал изучать Docker

96