Я пытаюсь получить заказанное количество в таблице cart_items
и отправленное количество в shipping_table
. Проблема в том, что некоторые skus
еще не отправлены, и я могу либо A) только вытащить отправленные товары, либо B) не иметь правильного общего количества отправленного кол-ва.
ОБРАЗЦЫ ДАННЫХ
`shipping_table`
id | invoice | sku | qty | order_id
99 | 104 | 15628 | 1 | 9313
98 | 104 | 34929 | 2 | 9313
97 | 103 | 34929 | 1 | 9313
96 | 102 | 15628 | 87 | 9999
95 | 101 | 34929 | 32 | 9999
94 | 100 | 35870 | 6 | 9999
`cart_items`
id | cart_id | sku | qty
64903 | 4935153 | 15628 | 1
65108 | 4935153 | 34929 | 4
65109 | 4935153 | 35870 | 4
В этом результате мы должны увидеть, что sku 35870 не отправил никаких товаров, 15628 отправил, и sku 34929 отправил только 3 товара.
ОЖИДАЕМЫЙ РЕЗУЛЬТАТ
sku | total_qty | total_shipped_qty
15628 | 1 | 1
34929 | 4 | 3
35870 | 4 | NULL
НЕПРАВИЛЬНЫЙ РЕЗУЛЬТАТ A
Это близко, но так как я запрашиваю order_id
, который находится только в одной таблице, он не тянет total_qty
для sku 35870, потому что он еще не в shipping_table
(он не поставляется вообще).
SELECT
CT.sku,
MT.`qty` as total_qty,
SUM(CT.`qty`) as total_shipped_qty
FROM `shipping_table` CT
LEFT JOIN
`cart_items` MT ON MT.sku = CT.sku
WHERE MT.`cart_id` = '4935153' AND CT.`order_id` = '9313'
GROUP BY MT.sku
sku | total_qty | total_shipped_qty
15628 | 1 | 1
34929 | 4 | 3
НЕПРАВИЛЬНЫЙ РЕЗУЛЬТАТ B
Вот что-то близкое, но это неверные значения total_shipped_qty
, потому что он смотрит на Итог в целом shipping_table
. Этот результат выглядит так, как будто он суммирует ВЕСЬ qtys для shipping_table
.
SELECT
CT.sku,
MT.`qty` as total_qty,
SUM(CT.`qty`) as total_shipped_qty
FROM `shipping_table` CT
LEFT JOIN
`cart_items` MT ON MT.sku = CT.sku
WHERE MT.`cart_id` = '4935153'
GROUP BY MT.sku
sku | total_qty | total_shipped_qty
15628 | 1 | 88
34929 | 4 | 35
35870 | 4 | 6