Curso de Fundamentos de Bases de Datos

LEFT JOIN explicado con ejemplos reales

Curso de Fundamentos de Bases de Datos

Contenido del curso

Manipulación de Datos

LEFT JOIN explicado con ejemplos reales

Resumen

El LEFT JOIN es la operación que da sentido al modelo relacional: te permite combinar dos o más tablas normalizadas y construir una vista enriquecida sin duplicar datos. Si trabajas con SQL y necesitas cruzar información entre productos, inversiones o clientes, dominar esta cláusula es el paso que convierte consultas básicas en queries potentes.

¿Por qué el JOIN es la magia de las bases de datos relacionales?

La normalización guarda cada dato una sola vez. Si tienes una marca llamada azul, vive en la tabla de marcas y los productos solo guardan su ID. El problema aparece cuando necesitas leer el nombre real, no el identificador.

Ahí entra el JOIN. En el minuto [00:30] se explica que normalizar significa escribir la información las menos veces posibles para evitar duplicados, y que las relaciones entre tablas se construyen con referencias por ID. El JOIN reconstruye esa información dispersa en una sola tupla legible.

¿Qué es un LEFT JOIN en SQL? Es una operación que toma todas las filas de la tabla izquierda y agrega las columnas coincidentes de la tabla derecha según una llave en común. Si no hay coincidencia, los campos derechos quedan nulos.

¿Cómo escribir la sintaxis básica de LEFT JOIN?

La estructura parte de un SELECT normal y agrega dos piezas nuevas: la tabla a unir y la condición de unión con ON. En el minuto [04:10] se construye el primer ejemplo cruzando investment con products.

sql SELECT * FROM investment LEFT JOIN products ON products.product_id = investment.product_id WHERE investment > 100000 AND id % 10 = 0;

Fíjate en tres detalles clave:

  • La tabla principal va en el FROM y es el eje del query.
  • LEFT JOIN products indica qué tabla quieres anexar.
  • ON define la llave de coincidencia, en este caso product_id en ambas tablas.

Si olvidas el ON, el motor lanza un error. Es la pieza que le dice a SQL dónde se conectan las tablas.

¿Cómo seleccionar columnas específicas y usar alias?

Traer todo con SELECT * genera tuplas larguísimas con datos repetidos. Lo práctico es pedir solo lo que necesitas usando la notación tabla.columna.

En el minuto [08:45] aparece la sintaxis con alias, que limpia el código:

sql SELECT p.product_id AS pid, p.name, p.price, i.investment FROM investment AS i LEFT JOIN products AS p ON p.product_id = i.product_id WHERE i.investment > 100000 AND i.id % 10 = 0 LIMIT 1;

Los alias funcionan en dos lugares: para renombrar columnas en la salida (AS pid) y para abreviar tablas (investment AS i). La recomendación es ser consecuente: si nombras la tabla con un alias, úsalo en todas las referencias del query.

¿Cuándo es obligatorio usar el nombre de tabla antes de la columna? Solo cuando la misma columna existe en dos tablas del JOIN. Si stock solo vive en products, puedes escribir stock directo, pero por claridad conviene mantener p.stock.

¿Cómo auditar datos entre dos tablas con un JOIN?

Un JOIN no solo une, también permite calcular y comparar entre tablas. Si la inversión dividida entre el precio debería igualar al stock, puedes verificarlo en una sola consulta.

En el minuto [12:20] se construye una columna calculada y un condicional para detectar inconsistencias:

sql SELECT p.product_id AS pid, p.name, p.price, i.investment, ROUND(i.investment / p.price) AS inventario_calculado, p.stock, IF(ROUND(i.investment / p.price) = p.stock, 'perfecto', 'error') AS status FROM investment AS i LEFT JOIN products AS p ON p.product_id = i.product_id WHERE i.investment > 100000 AND i.id % 10 = 0 LIMIT 10;

Un par de aprendizajes prácticos sobre este patrón:

  • No puedes referenciar dentro del SELECT una columna que acabas de crear en el mismo SELECT. Hay que repetir el cálculo.
  • La función IF devuelve un valor u otro según la condición, ideal para etiquetar filas como perfecto o error.
  • Modificar manualmente un registro con UPDATE products SET stock = 90 WHERE product_id = 181 te permite forzar un error y validar que la auditoría funciona.

¿Para qué sirve combinar varias tablas con JOIN?

El verdadero poder llega cuando unes tres o más tablas. Con un esquema de bills, bill_products, products y customers puedes construir oraciones completas: quién compró qué, a qué precio y en qué fecha.

En el minuto [17:30] se adelanta esta idea: bills conecta por un lado con productos a través de bill_products, y por otro con clientes. Esa es la base para generar reportes narrativos a partir de datos normalizados.

La regla es simple: puedes hacer tantos JOIN como necesites, siempre que cada unión esté ordenada y bien especificada con su ON correspondiente.

¿Qué tabla de tu proyecto crees que ganaría más al cruzarse con otra usando LEFT JOIN? Cuéntalo en los comentarios.