Это мой штормовый код:
items = store.find((Delivery, Product, Sum(Delivery.quantity)),
Delivery.id.is_in(order.id for order in self.orders),
Product.id == Delivery.product_id) \
.group_by(Delivery.date, Product.id, Delivery.discount) \
.order_by(Delivery.date, Product.name, Delivery.discount)
Это означает примерно следующий SQL:
SELECT deliveries.id, products.id, SUM(deliveries.quantity)
FROM deliveries, products
WHERE products.id = deliveries.id AND
-> deliveries.id IN (1,10,5,24,122, ...)
GROUP BY deliveries.date, product.id, delivery.discount
ORDER BY deliveries.date, product.id, delivery.discount
Если self.orders
слишком длинный, Слишком много переменных SQL Возникает исключение.
Есть ли альтернативный способ добиться этого?
Моя единственная идея - создать запрос для каждого отдельного заказа и объединить их вручную, используя словарь.