MySQL: LEFT JOIN .. tout sélectionner dans le tableau 1 même s’il n’y en a pas dans le tableau 2?

StackOverflow https://stackoverflow.com/questions/1602823

  •  05-07-2019
  •  | 
  •  

Question

Je rejoins quelques tables pour une sélection

S'il n'y a rien qui corresponde dans les 2e, 3e et 4e tables, je veux tout de même extraire les résultats tant que la première table a une correspondance. Je pensais que LEFT JOIN l’avait fait, mais ce n’est pas le cas.

Voici la requête complète:

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

qui tire 316 résultats

Voici la requête sans les jointures:

SELECT cart_product.* 
FROM cart_product 
WHERE cart_product.product_brand = "everlon" 
ORDER BY cart_product.product_manufacturer_num

qui tire 362 résultats

J'ai l'impression que cela se produit à cause de ma clause WHERE prod_drop.prod_drop_name = "quotation en poids carat" dans le dossier JOIN. Mais existe-t-il un moyen d'extraire ce dont j'ai besoin dans la requête ci-dessus tout en extrayant tout de la première table (le plus à gauche, cart_product) même si rien ne correspond aux autres tables?

Merci !!

Était-ce utile?

La solution

S'il n'y a pas de correspondance à droite prod_drop.prod_drop_name sera null

Ajouter OR prod_drop.prod_drop_name IS NULL devrait résoudre votre problème.

Autres conseils

essayer

WHERE prod_drop.prod_drop_name = "Carat Weight" or prod_drop.prod_drop_name is null

Changer

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" 

La requête renvoie également une correspondance s'il n'y a pas de valeur correspondante dans prod_drop.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top