MySQL: IZQUIERDA UNIR ... ¿seleccionar todo de la tabla 1, incluso si no está allí en la tabla 2?

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

  •  05-07-2019
  •  | 
  •  

Pregunta

Me estoy uniendo a algunas tablas para una selección

Si no hay nada que coincida en las tablas 2ª, 3ª y 4ª, todavía quiero obtener los resultados siempre que la primera tabla tenga una coincidencia. Pensé que LEFT JOIN hizo esto, pero no lo es.

Aquí está la consulta completa:

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

que obtiene 316 resultados

Aquí está la consulta sin las uniones:

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

que obtiene 362 resultados

Tengo una corazonada de que esto está sucediendo debido a mi DONDE prod_drop.prod_drop_name = " Peso en quilates " en la pregunta ÚNETE. Pero, ¿hay alguna forma de obtener lo que necesito en mi consulta anterior pero aún obtener todo de la primera tabla (la más a la izquierda, cart_product) incluso si nada coincide en las otras tablas?

¡Gracias!

¿Fue útil?

Solución

Si no hay coincidencia en el lado derecho, prod_drop.prod_drop_name será nulo

Agregar OR prod_drop.prod_drop_name IS NULL debería solucionar su problema.

Otros consejos

prueba

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

Cambiar

WHERE prod_drop.prod_drop_name = "Carat Weight" AND cart_product.product_brand = "everlon" 

a

WHERE (prod_drop.prod_drop_name = "Carat Weight" OR prod_drop.prod_drop_name IS NULL) AND cart_product.product_brand = "everlon" 

La consulta ahora también devolverá una coincidencia si no hay un valor coincidente en prod_drop.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top