Volver a la lista de artículos Artículos
Lectura de 7 minutos

4 formas sencillas de aprender por fin qué JOIN utilizar en una consulta SQL

Probablemente ya sepa que debe utilizar el JOIN para combinar datos de varias tablas. ¿Pero qué tipo de JOIN? En este artículo, presentaré cuatro formas sencillas para aprender finalmente qué JOIN utilizar en diferentes escenarios.

Antes de pasar a las estrategias inteligentes para aprender Tipos de JOIN en SQL, le sugiero que haga un breve repaso de los principales tipos de JOIN. Revisaremos varios ejemplos para recordar la diferencia entre (INNER) JOIN, LEFT (OUTER) JOIN, RIGHT (OUTER) JOIN, y FULL (OUTER) JOIN.

Tipos de JOIN en SQL: Una Breve Descripción

Para nuestros ejemplos de JOIN, utilizaremos los datos de un centro de partos, un centro de atención sanitaria dirigido por comadronas para madres que están de parto. En concreto, tenemos dos tablas:

  1. newborns, que tiene información básica sobre los bebés nacidos durante un período determinado.
  2. midwivesEn la página web de la Asociación de Matronas, encontrarás información sobre los nombres y la experiencia de las matronas que trabajan en nuestro centro de partos.

Aquí están las tablas:

newborns
idmother_namegenderweightheightmidwife_id
11Marta StewartMale3.452.0104
12Cathrine BlackFemale3.048.5101
13Julia GreyFemale2.848.1104
14Penelope GreenMale3.852.5105
15Gabriela GarciaMale2.948.8105
16Nikita MooreMale4.053.0102
17Lucy MillerFemale2.547.3101

midwives
idfirst_nameyears_experience
101Samantha White6
102Kathleen Webster2
103Sarah McCarty1
105Julia Smith4
106Angela Phillips0

Ahora, pasemos directamente a los ejemplos.

INNER JOIN

Empezaremos con el tipo de JOIN más común, que es INNER JOIN (o simplemente JOIN). Este tipo de join se utiliza para mostrar los registros coincidentes de ambas tablas.

Digamos que queremos obtener la identificación del recién nacido, el nombre de su madre, y también el nombre de la comadrona que le ayudó durante el parto. Para obtener esta información, podemos unir los newborns y midwives basándonos en el ID de la comadrona, que está disponible en ambas tablas:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
JOIN midwives m
ON n.midwife_id = m.id;

Para reducir la escritura, utilizamos alias para los nombres de las tablas: n para newborns y m para midwives. También utilizamos un alias de columna (m.name AS midwife) para obtener un nombre de columna significativo en la salida.

Este es el resultado:

idmother_namemidwife
12Cathrine BlackSamantha White
16Nikita MooreKathleen Webster
17Lucy MillerSamantha White
14Penelope GreenJulia Smith
15Gabriela GarciaJulia Smith

Tenemos la información que queríamos. Sin embargo, puede observar que faltan algunos recién nacidos (IDs 11 y 13) en nuestra tabla de resultados. Eso significa que los registros correspondientes (es decir, los ID de las matronas) no se han identificado en la segunda tabla (es decir, midwives).

Si desea conservar todos los registros de la primera tabla, debe utilizar LEFT JOIN.

LEFT JOIN

LEFT JOIN o LEFT OUTER JOIN se utiliza para mostrar todos los registros de la primera tabla (izquierda) y los registros coincidentes de la segunda tabla (derecha). Para mantener todos los recién nacidos en la salida, podemos utilizar la misma consulta anterior, simplemente sustituyendo JOIN por LEFT JOIN:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
LEFT JOIN midwives m
ON n.midwife_id = m.id;

Y el resultado:

idmother_namemidwife
12Cathrine BlackSamantha White
14Penelope GreenJulia Smith
11Marta StewartNULL
13Julia GreyNULL
17Lucy MillerSamantha White
16Nikita MooreKathleen Webster
15Gabriela GarciaJulia Smith

Ahora tenemos todos los registros de la tabla newborns en la salida. Al mismo tiempo, hay dos registros con valores NULL en la columna de matrona. Aparentemente, la matrona correspondiente (ID 104) no aparece en las midwives tablas. Tal vez haya empezado a trabajar recientemente en otro centro de partos.

¡Genial! Pero también es interesante ver si hay alguna comadrona en nuestro centro de partos que no haya asistido a partos recientes. Averigüémoslo utilizando RIGHT JOIN.

UNIÓN A LA DERECHA

RIGHT JOIN o RIGHT OUTER JOIN se utiliza para mostrar todos los registros de la segunda tabla (derecha) y los registros coincidentes de la primera tabla (izquierda). Si queremos conservar todos los registros de la tabla midwives, podemos utilizar exactamente la misma consulta SQL que antes, simplemente sustituyendo LEFT JOIN por RIGHT JOIN:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
RIGHT JOIN midwives m
ON n.midwife_id = m.id;

Tenga en cuenta que el RIGHT JOIN se utiliza muy poco, ya que normalmente se puede sustituir por el LEFT JOIN. En nuestro caso, podríamos utilizar LEFT JOIN, y cambiar el orden de las tablas, es decir, poner midwives en la cláusula FROM y newborns en la LEFT JOIN. El resultado sería el mismo que el de abajo:

idmother_namemidwife
12Cathrine BlackSamantha White
14Penelope GreenJulia Smith
15Gabriela GarciaJulia Smith
16Nikita MooreKathleen Webster
17Lucy MillerSamantha White
NULLNULLSarah McCarty
NULLNULLAngela Phillips

En la tabla resultante, se puede ver que hay dos matronas sin registros coincidentes en la newborns tabla: Sarah McCarty y Angela Phillips. Parece que estas dos matronas son las que tienen menos experiencia y probablemente estén ayudando a las matronas más experimentadas sin que se les asigne un papel importante.

Observe también que de nuevo no vemos todos los recién nacidos en el conjunto de resultados. ¿Qué pasa si queremos mantener todos los registros de ambas tablas? Es entonces cuando se debe utilizar el FULL JOIN.

FULL JOIN

FULL JOIN o FULL OUTER JOIN se utiliza para mantener todos los registros de ambas tablas. Por lo tanto, si queremos mantener todos los recién nacidos y todas las matronas en el conjunto de resultados, podemos sustituir el RIGHT JOIN de nuestro último ejemplo por un FULL JOIN. Tenga en cuenta también que el orden de las tablas no importa con FULL JOIN; podemos cambiar la posición de las tablas y obtener el mismo resultado:

SELECT n.id, n.mother_name, m.name AS midwife
FROM newborns n
FULL JOIN midwives m
ON n.midwife_id = m.id;
idmother_namemidwife
11Marta StewartNULL
12Cathrine BlackSamantha White
13Julia GreyNULL
14Penelope GreenJulia Smith
15Gabriela GarciaJulia Smith
16Nikita MooreKathleen Webster
17Lucy MillerSamantha White
NULLNULLSarah McCarty
NULLNULLAngela Phillips

Ahora tenemos algunos valores de NULL en todas las columnas; estos indican que algunos de los registros de la tabla de la izquierda no fueron emparejados en la segunda tabla o que algunos de los registros de la tabla de la derecha no fueron emparejados en la primera tabla.

Todos estos principios de JOIN no parecen demasiado difíciles, ¿verdad? Sin embargo, seleccionar el JOIN correcto a utilizar es a menudo un desafío para los principiantes. Así que, descubramos las mejores estrategias para dominar Tipos de JOIN en SQL.

4 maneras de aprender Tipos de JOIN en SQL

Aquí hay cuatro pasos para dominar finalmente los diferentes tipos de Tipos de JOIN en SQL.

  1. Aprenda las diferencias clave entre los tipos de JOIN. Su primer paso debe ser aprender sobre los cuatro tipos principales de JOIN y las reglas básicas para aplicarlos:
  • JOIN muestra sólo los registros coincidentes de ambas tablas.
  • LEFT JOIN muestra todos los registros de la tabla izquierda y los registros coincidentes de la tabla derecha.
  • RIGHT JOIN muestra todos los registros de la tabla derecha y los registros coincidentes de la tabla izquierda.
  • FULL JOIN muestra todos los registros de ambas tablas.
  1. Lea artículos de alta calidad en Tipos de JOIN en SQL. Una vez que haya aprendido lo básico, le recomendamos que revise los detalles y los casos de uso de los diferentes tipos de JOIN. Le sugiero que comience con estos artículos que discuten los principales tipos de JOIN e incluyen explicaciones detalladas y ejemplos:
  1. Utilice nuestra hoja de trucos de SQL JOIN. Incluso si conoce Tipos de JOIN en SQL bastante bien, a menudo es útil ver un breve recordatorio con la sintaxis y los casos de uso de los diferentes tipos de JOIN. Recomiendo imprimir o marcar nuestra increíble hoja de trucos de SQL JOIN. Es una guía ilustrada de Tipos de JOIN en SQL que puede consultar siempre que no esté seguro de cómo usar JOIN en su consulta SQL.
  1. ¡Practica! Por último, si realmente quieres dominar Tipos de JOIN en SQL, necesitas mucha práctica. Puedes leer sobre los retos que puedes encontrar al practicar Tipos de JOIN en SQL. Para que tu primera experiencia con Tipos de JOIN en SQL sea lo más fluida posible, te sugiero que empieces con el curso interactivo de LearnSQL.com Tipos de JOIN en SQL de LearnSQL.com. Este curso práctico incluye 93 desafíos de codificación que cubren todos los tipos importantes de Tipos de JOIN en SQL. Específicamente, aprenderás:
  • Cuando usar JOIN, LEFT JOIN, RIGHT JOIN, y FULL JOIN.
  • Cómo unir tres o más tablas en una consulta.
  • Cómo filtrar datos con diferentes tipos de join.
  • Cómo unir una tabla consigo misma.
  • Qué es un join no equitativo y cuándo utilizarlo.

Puedes aprender más sobre este curso en este artículo general.

Gracias por leer, y ¡feliz aprendizaje!