У меня есть проблема, которая включает в себя 3 таблицы, подобные этой (я показываю только значимые поля):
Заказы таблицы:
id
date
В каждом заказе может быть больше строк:
Таблица OrderRows:
id
order_id
article_id
quantity
quantity_evaded
quantity_available
Теперь в таблице списка заказов я делаю запрос, подобный этому, чтобы суммировать все значения заказа
SELECT o.*,
SUM(r.quantity) quantity, SUM(r.quantity_evaded) evaded,
SUM(r.quantity_available) available
FROM `Orders` AS `o`
LEFT JOIN `OrderRows` as `r` ON `r`.`order_id`=`o`.`id`
GROUP BY `o`.`id`
Теперь проблема в том, что этот запросничего не говорит мне о том, что заказ может быть закрыт или нет.Заказ можно закрыть, когда все статьи в нем имеют достаточную доступность для каждой строки.Давайте возьмем пример, где у меня есть заказ с двумя статьями, статьей A и статьей B, каждая из которых была заказана в количестве 5 и доступно 10 для A и 2 для B.
сумма доступности дает 12 (10 + 2), что превышает заказанное количество, что составляет 10, но у меня недостаточно товаров для товаров B (заказано только 2 на 5).Есть ли способ сделать сумму таким образом, чтобы она подсчитывалась до определенного максимального значения, или единственный способ, которым я располагаю, состоит в том, чтобы циклически обрабатывать все строки порядка и проверять, достаточно ли все единственные строки в наличии?