MySQL: LEFT JOIN .. wählen Sie alle aus Tabelle 1 auch dort, wenn nicht in der Tabelle 2?
Frage
Ich bin ein paar Tische für eine Auswahl Beitritt
Wenn es etwas ist nicht in der 2., 3., 4. Tabellen passend Ich möchte immer noch die Ergebnisse ziehen, solange die erste Tabelle ein Spiel hat. Ich dachte, LEFT JOIN tat dies, aber es ist nicht.
Hier ist die vollständige Abfrage:
SELECT cart_product.*, prod_drop_products.prod_drop_product_name, everlon_sheet.*, cart_product.product_id AS product_id
FROM cart_product
LEFT JOIN everlon_sheet ON cart_product.product_id = everlon_sheet.product_id
LEFT JOIN prod_drop_products ON cart_product.product_id = prod_drop_products.product_id
LEFT JOIN prod_drop ON prod_drop.prod_drop_id = prod_drop_products.prod_drop_id
WHERE prod_drop.prod_drop_name = "Carat Weight" AND cart_product.product_brand = "everlon"
ORDER BY cart_product.product_manufacturer_num
, welche zieht 316 Ergebnisse
Hier ist die Abfrage, ohne die Verbindungen:
SELECT cart_product.*
FROM cart_product
WHERE cart_product.product_brand = "everlon"
ORDER BY cart_product.product_manufacturer_num
, welche zieht 362 Ergebnisse
Ich habe das Gefühl, dies wegen meines geschieht WHERE prod_drop.prod_drop_name = "Karat-Gewicht" Klausel in der qry JOIN. Aber ist es eine Möglichkeit zu ziehen, was ich in meiner Anfrage muß oben, aber nach wie vor ziehe alles aus dem ersten (am weitesten links, cart_product) Tisch, auch wenn nichts paßt in den anderen Tabellen?
Danke !!
Lösung
Wenn es keine Übereinstimmung gibt auf der rechten Seite prod_drop.prod_drop_name null sein wird,
Das Hinzufügen oder prod_drop.prod_drop_name IS NULL sollte Ihr Problem beheben.
Andere Tipps
Versuch
WHERE prod_drop.prod_drop_name = "Carat Weight" or prod_drop.prod_drop_name is null
Ändern
WHERE prod_drop.prod_drop_name = "Carat Weight" AND cart_product.product_brand = "everlon"
WHERE (prod_drop.prod_drop_name = "Carat Weight" OR prod_drop.prod_drop_name IS NULL) AND cart_product.product_brand = "everlon"
Die Abfrage wird nun auch ein Spiel zurück, wenn kein passender Wert in prod_drop ist.