Un JOIN combina filas de dos tablas emparejándolas por una condición, normalmente una clave foránea. El tipo de join decide qué ocurre con las filas que no tienen coincidencia en el otro lado.
Un JOIN combina filas de dos tablas emparejándolas por una condición, normalmente una clave foránea. El tipo de join decide qué ocurre con las filas que no tienen coincidencia en el otro lado.
NULL.-- customers(id, name) orders(id, customer_id, total)
-- INNER: only customers who have at least one order
SELECT c.name, o.total
FROM customers c
INNER JOIN orders o ON o.customer_id = c.id;
-- LEFT: every customer, even those with zero orders (total = NULL)
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
-- Classic use: find customers with NO orders
SELECT c.name
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
WHERE o.id IS NULL; -- the LEFT JOIN's NULL side reveals the gap
WHERE (p. ej. WHERE o.total > 100) convierte silenciosamente un LEFT JOIN de nuevo en un INNER JOIN, porque NULL > 100 es falso. Pon tales condiciones en la cláusula ON si quieres conservar las filas sin coincidencia.La mayoría de las consultas reales abarcan varias tablas, y el tipo de join equivocado descarta o duplica filas de forma silenciosa — un bug que devuelve resultados plausibles. Saber que LEFT JOIN + IS NULL encuentra filas "faltantes", y que un WHERE sobre el lado nulo cancela el LEFT, evita toda una clase de errores en los informes.
Una biblioteca de preguntas de entrevista de IT con respuestas detalladas — de Junior a Senior.
Donar