
Les comparto una imagen que en más de una ocasión me ha salvado
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:
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
stocksolo vive en products, puedes escribirstockdirecto, pero por claridad conviene mantenerp.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:
SELECT una columna que acabas de crear en el mismo SELECT. Hay que repetir el cálculo.IF devuelve un valor u otro según la condición, ideal para etiquetar filas como perfecto o error.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.
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.
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.
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:
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.
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
stocksolo vive en products, puedes escribirstockdirecto, pero por claridad conviene mantenerp.stock.
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:
SELECT una columna que acabas de crear en el mismo SELECT. Hay que repetir el cálculo.IF devuelve un valor u otro según la condición, ideal para etiquetar filas como perfecto o error.UPDATE products SET stock = 90 WHERE product_id = 181 te permite forzar un error y validar que la auditoría funciona.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.

Les comparto una imagen que en más de una ocasión me ha salvado
Sería importante que explicara bien el concepto de LEFT JOIN, para poder comprender mejor los ejemplos y evitar confusiones.
En relación a la tarea de la clase 22 que era devolver el nombre y id del producto con mas inversión hice el siguiente join por si le llama a alguien la atención hacerlo tambien. Lo dejo bien abajo para que no se ve de 1er pantallazo por si lo quieren intentara antes de ver:
mas abajo ----> ---->
mas abajo ----> ---->
mas abajo ----> ---->
mas abajo ----> ---->
un poco más -----> ----->
ya casi -----> ------>
SELECT
p.product_id,
p.name,
i.investment
FROM products AS p
LEFT JOIN investment AS i
ON p.product_id = i.productID
ORDER BY i.investment DESC
LIMIT 1;
Los joins son operaciones en bases de datos que permiten combinar registros de dos o más tablas basándose en una relación común. Se utilizan para:
Importancia: Son cruciales para obtener una visión completa y coherente de los datos, permitiendo responder preguntas más complejas.
Antipatrones: Evitar joins innecesarios o complejos puede prevenir problemas de rendimiento. Es fundamental diseñar adecuadamente la estructura de las tablas y las relaciones para optimizar las consultas.
Sí, puedes hacer más de un JOIN en una misma consulta SQL. Para unir tres tablas, utilizarías la siguiente sintaxis:
SELECT
a.columna1, b.columna2, c.columna3
FROM
tablaA AS a
LEFT JOIN
tablaB AS b ON a.id = b.a_id
LEFT JOIN
tablaC AS c ON b.id = c.b_id;
En este ejemplo, tablaA se une a tablaB y luego tablaB se une a tablaC. Cada LEFT JOIN se conecta mediante una condición especificada en el ON. Esto te permite traer datos relacionados de múltiples tablas, lo cual es fundamental en bases de datos relacionales.
ESQUEMA DE UN LEFT JOIN
SELECT [atributos]
FROM TablaX AS x
LEFT JOIN TablaY AS y
ON x.atributoX = y.atributoY
La verdad el profesor dabe mucho y tiene la capacidad de explicar bien, pero de repente esta explicando algo y salta a otra cosa.
FROM tabla_principal define el eje de la consulta.LEFT JOIN tabla_secundaria ON condición establece el vínculo mediante llaves compartidas (ej. product_id).AS p) para simplificar referencias y mejorar la legibilidad.p.price) para evitar ambigüedades, especialmente si existen nombres duplicados.inversión / precio).IF) para comparar valores calculados contra registros existentes.JOIN para reconstruir entidades complejas a partir de varias tablas relacionadas.Normalmente me confunde saber que JOIN usar por lo cual lo que hago es lo siguiente:
SELECT
p.product_id,
p.name,
p.sku,
I.investment
FROM
products AS p,
investment AS I
WHERE
p.product_id = I.product_id
ORDER BY
I.investment
DESC
LIMIT 10;
Adjunto el resultado:

Hay algo que no entendí, tengo esta línea: where investment > 10000 and investment_id %10 = 0 Por lo tanto, todos los products ids debería ser múltiplos de 10, pero veo que al profesor le salen ahora múltiplo de 10 + 1, por ello veo 51, 61, 71.
Me perdí de algo, o alguien me puede explicar qué sucedió?
Alberto Díaz Castro
Agustín Alberto Leiva
Juan Cahuana
Juliana Ordoñez
Andrea Quiñonez
gemma clavero del moral
Enrique Alexis Lopez Araujo
Henry Santiago Mariño Durán
Daniel Felipe Lozano Naranjo
Danys Hernández
Jefred Bedoya
Javier Emanuel González Andrade
Oscar Garcia
Alberto Alcocer
ProfesorEmilio Sala
Les comparto una imagen que en más de una ocasión me ha salvado
Muy buena, gracias por compartirla
Me confunde un poco el ejemplo final, creería que en lugar de WHERE B.key is null, sería Where A.key is null. Porque cuando se usa right join , se preserva todos los registros de ala tabla B y loque podría ser null sería los registros de la tabla A ?
Sería importante que explicara bien el concepto de LEFT JOIN, para poder comprender mejor los ejemplos y evitar confusiones.
Estaba explicando y de repente salta a los Alias, es confuso!
En relación a la tarea de la clase 22 que era devolver el nombre y id del producto con mas inversión hice el siguiente join por si le llama a alguien la atención hacerlo tambien. Lo dejo bien abajo para que no se ve de 1er pantallazo por si lo quieren intentara antes de ver:
mas abajo ----> ---->
mas abajo ----> ---->
mas abajo ----> ---->
mas abajo ----> ---->
un poco más -----> ----->
ya casi -----> ------>
SELECT
p.product_id,
p.name,
i.investment
FROM products AS p
LEFT JOIN investment AS i
ON p.product_id = i.productID
ORDER BY i.investment DESC
LIMIT 1;
Los joins son operaciones en bases de datos que permiten combinar registros de dos o más tablas basándose en una relación común. Se utilizan para:
Importancia: Son cruciales para obtener una visión completa y coherente de los datos, permitiendo responder preguntas más complejas.
Antipatrones: Evitar joins innecesarios o complejos puede prevenir problemas de rendimiento. Es fundamental diseñar adecuadamente la estructura de las tablas y las relaciones para optimizar las consultas.
Sí, puedes hacer más de un JOIN en una misma consulta SQL. Para unir tres tablas, utilizarías la siguiente sintaxis:
SELECT a.columna1, b.columna2, c.columna3 FROM tablaA AS a LEFT JOIN tablaB AS b ON a.id = b.a_id LEFT JOIN tablaC AS c ON b.id = c.b_id;
En este ejemplo, tablaA se une a tablaB y luego tablaB se une a tablaC. Cada LEFT JOIN se conecta mediante una condición especificada en el ON. Esto te permite traer datos relacionados de múltiples tablas, lo cual es fundamental en bases de datos relacionales.
ESQUEMA DE UN LEFT JOIN
SELECT [atributos]
FROM TablaX AS x
LEFT JOIN TablaY AS y
ON x.atributoX = y.atributoY
La verdad el profesor dabe mucho y tiene la capacidad de explicar bien, pero de repente esta explicando algo y salta a otra cosa.
Fundamentos del Left Join
FROM tabla_principal define el eje de la consulta.LEFT JOIN tabla_secundaria ON condición establece el vínculo mediante llaves compartidas (ej. product_id).AS p) para simplificar referencias y mejorar la legibilidad.p.price) para evitar ambigüedades, especialmente si existen nombres duplicados.inversión / precio).IF) para comparar valores calculados contra registros existentes.JOIN para reconstruir entidades complejas a partir de varias tablas relacionadas.Normalmente me confunde saber que JOIN usar por lo cual lo que hago es lo siguiente:
SELECT
p.product_id,
p.name,
p.sku,
I.investment
FROM
products AS p,
investment AS I
WHERE
p.product_id = I.product_id
ORDER BY
I.investment
DESC
LIMIT 10;
Adjunto el resultado:
Hay algo que no entendí, tengo esta línea: where investment > 10000 and investment_id %10 = 0 Por lo tanto, todos los products ids debería ser múltiplos de 10, pero veo que al profesor le salen ahora múltiplo de 10 + 1, por ello veo 51, 61, 71.
Me perdí de algo, o alguien me puede explicar qué sucedió?
ojo, la condición es sobre investment_id % 10 pero los que se ven como 10 + 1 son product_id
en el select está el product_id como pid. en el where es investment_id. son distintos. pero si es curioso que todos terminen en 1. al ser datos fabricados quizás haya algún patrón detrás de ello