У меня есть 3 таблицы:
Orders
- id
- customer_id
Details
- id
- order_id
- product_id
- ordered_qty
Parcels
- id
- detail_id
- batch_code
- picked_qty
Заказы имеют несколько строк сведений, ряд сведений для каждого продукта.
Ряд сведений содержит несколько посылок, так как может поступить 10 000 заказанных штукиз 6 разных партий, поэтому товары из партий упаковываются и отправляются отдельно.Выбранное количество, помещенное в каждую посылку для строки подробностей, должно быть таким же, как order_qty.
... надеюсь, что это имеет смысл.
Я изо всех сил пытаюсь написать запрос, чтобы предоставить сводную информациювсего этого.
Мне нужно сгруппировать по customer_id, чтобы предоставить строку данных для каждого клиента.
Эта строка должна содержать
- Их общее количество заказов.
- Общее количество заказанных им товаров по всем заказам
- Общее количество выбранных товаров по всем заказам
Я могу получить первый с:
SELECT customer_id, COUNT(*) as number_of_orders
FROM Orders
GROUP BY Orders.customer_id
Но когда я ЛЕВО СОЕДИНЯЮСЬ две другие таблицы и добавляю
SELECT ..... SUM(Details.ordered_qty) AS total_qty_ordered,
SUM(Parcels.picked_qty) AS total_qty_picked
.., тогда я получаю результаты, которые не суммируются с количествами, и COUNT (*), кажется, включаетдополнительные строки из JOIN, которые, очевидно, больше не дают мне количество ордеров.
Не уверен, что делать дальше.===== РЕДАКТИРОВАТЬ =======
Вот запрос, который я пробовал:
SELECT
customer_id,
COUNT(*) as number_of_orders,
SUM(Details.ordered_qty) AS total_qty_ordered,
SUM(Parcels.picked_qty) AS total_qty_picked
FROM Orders
LEFT JOIN Details ON Details.order_id=Order.id
LEFT JOIN Parcels ON Parcels.detail_id=Detail.id
GROUP BY Orders.customer_id