Próbuję wyświetlić listę zmian produktu z ich zamówionymi ilościami, ALE TAKŻE pokaż wariacje produktu, w których nie ma zamówionej ilości. Pomyślałem więc, że będzie to tak proste, jak wybranie produktów i zrobienie połączenia z lewej strony na zamówieniach każdego produktu, w którym zamówienie jest aktualną wersją.Połączenie lewy/kombinacja Mysql nie działa zgodnie z oczekiwaniami
więc spodziewałem się ten kolejności operacji:
SELECT p.product_id, SUM(po.quantity)
FROM `products` p
LEFT JOIN `product_orders` po ON p.product_id=po.product_id
LEFT JOIN `orders` o ON o.order_id=po.order_id AND o.is_current='1'
ale jest coraz także ilości gdzie is_current nie jest 1 Wtedy pomyślałem, w porządku, mogę po prostu zrobić sprzężenie wewnętrzne po lewej dołącz zamiast tego w ten sposób:
SELECT p.product_id, SUM(po.quantity)
FROM `products` p
LEFT JOIN `product_orders` po ON p.product_id=po.product_id
INNER JOIN `orders` o ON o.order_id=po.order_id AND o.is_current='1'
, ale produkty, które nie zostały jeszcze zamówione, nie są wymienione. Spodziewałem się, że pojawią się jako SUMA (ilość) będąca NULL. Czy ktoś może zobaczyć, gdzie moja logika poszło nie tak? Dzięki! Scott
ma sens, spróbuję go ... one sec – scott
Perfect, działa świetnie! ! Dokładnie to, co było potrzebne. Dzięki wielkie! – scott
Bez problemu. Byłeś na dobrej drodze; Potrzebowałem tylko dodatkowego kroku. – kaj