CORE Code School

SQL básico: Aprende a unir tablas con JOIN

10 minutos

La operación JOIN es muy usada en las bases de datos relacionales, pues nos permite sacar provecho de las relaciones entre las tablas.

Es la responsable de unir las filas de dos tablas. Una unión no es una simple concatenación, si no que se realiza segun algun parámetro que definamos. Veamos un ejemplo.

sql
<left_table> JOIN <right_table>
ON <left_table>.value = <right_table>.value

La operación JOIN devuelve una tabla y esta la podemos colocar en lugar de una tabla en la consulta SELECT. También podemos hacer un JOIN entre la tabla resultante de un JOIN y otra.

La cláusula ON define los parámetros según los cuales las filas de las diferentes tablas se unirán. Aunque lo más normal es unir tablas mediante una relación de clave externa, se pueden usar otras condiciones. Siempre que la condición genere un valor True, las dos filas se unirán en la tabla resultante.

Si dos tablas se unen con una condición que siempre es True, todas las filas de la tabla Left se emparejarán con todas las filas de la tabla Right.

🤝 Tipos de Join

Los diferentes tipos de JOIN son importantes para saber cuál será la estrategia a seguir con los valores nulos.

tipos_join

Las tablas que se utilizarán en los diferentes ejemplos de operación JOIN son las siguientes:

Left Table

idname
1Pepe
2Marina
3Sarah

Right Table

idjob_type
2lawyer
3teacher
4scuba diver

👈🏽👉🏽 Left y Right Join

Si hacemos un Left o Right join, estaremos favoreciendo una de estas tablas. En ese caso todos los elementos de la tabla seleccionada estarán en la tabla resultante. Aquellos que no posean un equivalente en la otra tabla tendrán esos valores sustituidos por nulos.

sql
SELECT * FROM
<left_table> LEFT JOIN <right_table>
ON <left_table>.id = <right_table>.id

La tabla resultante tendría todas las filas de Left, pero en aquellos casos que no hay una fila de Right que cumpla la condición, el valor para right_table.id será NULL.

left_table.idnameright_table.idjob_type
1PepeNULLNULL
2Marina2lawyer
3Sarah3teacher

El Right Join nos daria otro resultado.

sql
SELECT * FROM
<left_table> RIGHT JOIN <right_table>
ON <left_table>.id = <right_table>.id
left_table.idnameright_table.idjob_type
2Marina2lawyer
3Sarah3teacher
NULLNULL4scuba diver

🕸️ Full Outer Join

El Full Outer Join es la unión entre ambos Left y Right Join. Todas las filas de ambas tablas estarán presentes en el resultado, y en todos los casos en que la condición no se haya cumplido, habrá un nulo.

sql
SELECT <left_table>.id, <right_table>.id FROM
<left_table> FULL OUTER JOIN <right_table>
ON <left_table>.id = <right_table>.id
left_table.idnameright_table.idjob_type
1PepeNULLNULL
2Marina2lawyer
3Sarah3teacher
NULLNULL4scuba diver

🔗 Inner Join

A diferencia de los tipos de JOIN anteriores, en el INNER JOIN no habrá valores nulos, ya que solo se considerarán las filas en las que se cumpla la condición establecida.

sql
SELECT <left_table>.id, <right_table>.id FROM
<left_table> JOIN <right_table>
ON <left_table>.id = <right_table>.id
left_table.idnameright_table.idjob_type
2Marina2lawyer
3Sarah3teacher

🆔 Alias de tabla

Cuando queremos hacer muchas operaciones JOIN, el proceso puede tornarse muy verboso, pues necesitamos especificar el origen de las columnas que tengan el mismo nombre. En este caso es muy útil el uso de los alias para poder facilitar el proceso. Simplemente indicamos con AS <alias> el nombre que queremos dar como Alias a esa tabla.

sql
SELECT lt.name, rt.job_type
FROM left_table AS lt
JOIN right_table AS rt
ON lt.id = rt.id;

Al usar AS lt y AS rt, estamos dando un alias a cada tabla para referirnos a ellas más fácilmente en la consulta. El resultado será una tabla que contiene el nombre de cada persona y su trabajo correspondiente:

namejob_type
Marinalawyer
Sarahteacher

Ya que esas son las únicas filas donde se cumple la condición lt.id = rt.id.

Bootcamp Python y Data Analytics