Sentencias de unión en SQL: Cómo utilizar INNER JOIN, LEFT JOIN y RIGHT JOIN en tus consultas.

Nicolás Urrego
18 min readApr 9, 2024

Las sentencias de unión juegan un papel fundamental en la combinación de datos de múltiples tablas. SQL ofrece varias opciones de unión, como INNER JOIN, LEFT JOIN y RIGHT JOIN, cada una con sus propias características y aplicaciones específicas.

En este artículo, exploraremos en detalle estas sentencias de unión, desde su sintaxis básica hasta su uso en consultas complejas. Aprenderemos cuándo y cómo utilizar cada tipo de unión, así como algunas prácticas recomendadas para optimizar su uso.

Con este conocimiento, podrás aprovechar al máximo el potencial de SQL para manipular y extraer información de tus bases de datos de manera eficiente y efectiva para ser un analista de datos competente.

Tabla de contenidos

  1. Definiendo relaciones en bases de datos
  2. INNER JOIN
  3. LEFT JOIN: Uniendo por la izquierda
  4. RIGHT JOIN: Uniendo por la derecha

Definiendo relaciones en bases de datos

Es importante definir las relaciones en las bases de datos porque ayuda a organizar y estructurar los datos de manera coherente, lo que facilita la recuperación y manipulación de la información de manera eficiente. Al establecer relaciones entre las tablas, se pueden evitar redundancias y inconsistencias en los datos, lo que mejora la integridad y la precisión de la información almacenada.

Relaciones uno a muchos

El primer tipo de relación que exploramos es la relación uno a muchos, la cual es ampliamente común en las bases de datos. Este tipo de relación entre dos tablas, se establece cuando un registro de una tabla puede estar asociado a varios registros de otra tabla, pero no de manera inversa.

En este caso la Foreign Key siempre se definirá en la tabla secundaria o dependiente, la cual podrá repetirse n veces en función a la Primary Key con la que se establece la relación.

En este ejemplo podemos ver como se establece una relación 1 a n entre la tabla clientes y la tabla pedidos ya que un cliente puede tener varios pedidos y varios pedidos solo pueden pertenecer a un cliente.

La Primary Key de un cliente podría repetirse varias veces en la Foreign Key de la tabla pedidos (id_clientes) para guardar la información de todos los pedidos realizados por un cliente determinado.

Relaciones uno a uno

Este tipo de relación entre dos tablas se establece cuando un registro de una tabla solo puede estar vinculado a un único registro en otra tabla. Este tipo de relación se utiliza generalmente para relaciones exclusivas cuando tenemos gran cantidad de campos. Dicha relación nos permite dividir la información en tablas más pequeñas con menos cantidad de campos y facilitar la gestión de nuestras bases de datos.

Dicha relación se establece a través de una Foreign Key que se vincula directamente con la Primary Key de la tabla principal. En este tipo de relaciones será indistinto que tabla considerar principal y que tabla dependiente para establecer la Foreign Key, siendo ello decisión de diseño del administrador de acuerdo a los datos que guardar en las tablas.

En este ejemplo podemos observar cómo se establece una relación 1 a 1 entre las tablas paises y banderas, ya que un país solo puede tener asociada una bandera y una bandera solo puede pertenecer a un país. Constituye un tipo de relación muy utilizada que nos permite organizar los datos de manera eficiente y sencilla.

Relaciones muchos a muchos

El tipo de relación muchos a muchos se establece cuando varios registros de una tabla se asocian a varios registros de la otra. Para ello es necesario definir una tercera tabla intermedia para establecer primero dos relaciones 1 a muchos y poder vincular correctamente las dos tablas principales.

Por lo general, la clave principal (Primary Key) de la tercera tabla intermedia será una combinación de las claves principales (Primary Key) de las dos tablas principales. Esta clave compuesta (Composite Key) formará dos claves foráneas (Foreign Key) hacia cada una de las tablas principales con las que establece relación. Además de conectar las relaciones entre las tablas, esta tercera tabla también puede almacenar información adicional, como datos de auditoría u otros detalles importantes relacionados con el establecimiento de la relación.

Por ejemplo, un alumno tiene varias asignaturas. Asimismo, una asignatura puede tener varios alumnos. Esta relación se modela adecuadamente en una base de datos utilizando tablas separadas para alumnos y asignaturas, y una tabla de unión para asociar las asignaturas con los alumnos que las imparten.

Observamos igualmente que la Primary Key de la tabla asignaturasAlumnos es la concatenación de idAlumnos e idAsignaturas dando lugar a una CompositeKey. A su vez idAlumnosforma la ForeignKey que se relaciona con la tabla alumnos e idAsignaturas la ForeignKey vinculada a la tabla asignaturas.

INNER JOIN

INNER JOIN es una sentencia utilizada en SQL para combinar filas de dos o más tablas basadas en una condición de unión. Esta condición de unión especifica cómo las filas de una tabla se relacionan con las filas de otra tabla para formar el resultado conjunto.

¿Cuándo usar INNER JOIN?

INNER JOIN se utiliza cuando solo deseas recuperar registros que tienen coincidencias en ambas tablas. En otras palabras, quieres obtener solo los registros que cumplen con la condición de unión establecida.

Sintaxis de INNER JOIN

La sintaxis básica de INNER JOIN implica enumerar las tablas a unir después de FROM, seguido de INNER JOIN y la tabla a unir. La condición de unión se especifica utilizando la palabra clave ON, donde se establece la relación entre los campos de las tablas.

SELECT columnas
FROM tabla1
INNER JOIN tabla2
ON tabla1.columna = tabla2.columna;

Cláusula USING: Prescindiendo de ON

La cláusula USING en INNER JOIN es una forma alternativa de especificar la condición de unión entre dos tablas cuando ambas tienen columnas con el mismo nombre y deseamos unir las tablas basadas en esas columnas comunes. En lugar de usar la cláusula ON para especificar la condición de unión, podemos utilizar USING para simplificar la sintaxis de la consulta.

SELECT t.columna, e.columna
FROM tabla1 AS t
INNER JOIN tabla2 AS e
USING(columna identica);

Ejemplo de uso de INNER JOIN

Supongamos que tenemos dos tablas: “empleados” y “departamentos”. Queremos recuperar los nombres de los empleados y los nombres de los departamentos a los que pertenecen, donde los registros de ambas tablas estén relacionados por el campo “id_departamento”.

Tabla empleados:

Tabla departamentos:

Ahora, queremos obtener una lista de empleados con sus respectivos departamentos:

SELECT empleados.nombre AS empleado, departamentos.nombre AS departamento
FROM empleados
INNER JOIN departamentos
ON empleados.id_departamento = departamentos.id_departamento;

En este ejemplo, la sentencia INNER JOIN combina las filas de las tablas “empleados” y “departamentos” donde el valor de “id_departamento” en la tabla “empleados” coincide con el valor de “id_departamento” en la tabla “departamentos”. El resultado sería:

Múltiples uniones: La utilidad de usar alias

Cuando se trabaja con múltiples tablas en una consulta SQL, el uso de alias en múltiples uniones hace que las consultas SQL sean más legibles, claras y fáciles de entender. Esto ayuda a los desarrolladores a escribir consultas más eficientes y a evitar errores al trabajar con bases de datos complejas.

Supongamos que tenemos tres tablas: “clientes”, “pedidos” y “productos”. Queremos obtener información sobre los pedidos realizados por cada cliente y los productos asociados a cada pedido. Utilizaremos alias para las tablas y campos para hacer que la consulta sea más legible.

SELECT c.nombre AS nombre_cliente, p.numero_pedido, pr.nombre AS nombre_producto 
FROM clientes AS c
INNER JOIN pedidos AS p
ON c.id_cliente = p.id_cliente
INNER JOIN productos AS pr
ON p.id_producto = pr.id_producto;

En este ejemplo, “c” es el alias de la tabla “clientes”, “p” es el alias de la tabla “pedidos” y “pr” es el alias de la tabla “productos”. Utilizamos estos alias para referirnos a las tablas en la consulta. Además, utilizamos alias para los campos específicos, como “nombre_cliente” para el nombre del cliente, “numero_pedido” para el número del pedido y “nombre_producto” para el nombre del producto. Esto hace que la consulta sea más legible y fácil de entender.

Uso de WHERE con INNER JOIN

La cláusula WHERE se utiliza para filtrar filas basadas en una condición específica. Podemos aplicar condiciones tanto a las columnas de las tablas unidas como a cualquier otra columna presente en las tablas.

Supongamos que con nuestras dos tablas: “empleados” y “departamentos”, y queremos obtener los nombres de los empleados que pertenecen al departamento de “Ventas”.

SELECT empleados.nombre AS nombre_empleado
FROM empleados
INNER JOIN departamentos ON empleados.id_departamento = departamentos.id_departamento
WHERE departamentos.nombre = 'Ventas';

Esta consulta selecciona el nombre de los empleados que pertenecen al departamento de ‘Ventas’. Después de aplicar el INNER JOIN y el WHERE, la tabla de resultados contendría solo los empleados cuyo departamento es ‘Ventas’. Entonces, el resultado sería:

Uso de ORDER BY con INNER JOIN

La cláusula ORDER BY se utiliza para ordenar los resultados en función de una o más columnas, ya sea en orden ascendente (ASC) o descendente (DESC). Podemos aplicar ORDER BY a columnas de cualquiera de las tablas unidas.

Supongamos que queremos obtener una lista de empleados ordenados alfabéticamente por su nombre y también queremos incluir el nombre de su departamento.

SELECT empleados.nombre AS nombre_empleado, departamentos.nombre AS nombre_departamento
FROM empleados
INNER JOIN departamentos ON empleados.id_departamento = departamentos.id_departamento
ORDER BY empleados.nombre ASC;

Esta consulta selecciona el nombre de los empleados y el nombre de su respectivo departamento, ordenados alfabéticamente por el nombre del empleado (ASC). Después de aplicar el INNER JOIN y el ORDER BY, la tabla de resultados contendría los siguientes datos:

Uso de GROUP BY con INNER JOIN

La cláusula GROUP BY se utiliza para agrupar filas que tienen el mismo valor en una o más columnas y aplicar funciones de agregación a los grupos resultantes. Podemos usar GROUP BY en columnas de cualquiera de las tablas unidas.

Supongamos que queremos contar cuántos empleados hay en cada departamento y también queremos mostrar el nombre de cada departamento.

SELECT departamentos.nombre AS nombre_departamento, COUNT(empleados.id_empleado) AS total_empleados
FROM empleados
INNER JOIN departamentos ON empleados.id_departamento = departamentos.id_departamento
GROUP BY departamentos.nombre;

Esta consulta realiza un conteo de empleados por departamento, agrupados por el nombre del departamento. Después de aplicar el INNER JOIN y el GROUP BY, la tabla de resultados contendría los siguientes datos:

Reuniendo todo: Consultas complejas usando INNER JOIN

Supongamos que tenemos tres tablas: “empleados”, “departamentos” y “salarios”. Queremos obtener el nombre de los empleados, el nombre de su departamento y el salario promedio de cada departamento. Además, queremos mostrar solo los departamentos que tienen un salario promedio superior a 3000 y ordenar los resultados por el salario promedio de manera descendente.

La tabla salarios tiene los siguientes datos:

Ahora, apliquemos la consulta SQL proporcionada:

SELECT departamentos.nombre AS nombre_departamento, 
AVG(salarios.salario) AS salario_promedio
FROM empleados
INNER JOIN departamentos ON empleados.id_departamento = departamentos.id_departamento
INNER JOIN salarios ON empleados.id_empleado = salarios.id_empleado
GROUP BY departamentos.nombre
HAVING salario_promedio > 3000
ORDER BY salario_promedio DESC;

Esta consulta SQL realiza lo siguiente:

  1. Realiza un INNER JOIN entre las tablas “empleados” y “departamentos” para obtener el nombre del departamento de cada empleado.
  2. Realiza otro INNER JOIN entre las tablas “empleados” y “salarios” para obtener los salarios de los empleados.
  3. Agrupa los resultados por el nombre del departamento.
  4. Calcula el salario promedio de cada departamento utilizando la función AVG().
  5. Utiliza la cláusula HAVING para filtrar solo los departamentos cuyo salario promedio es mayor que 3000.
  6. Ordena los resultados por salario promedio de manera descendente utilizando la cláusula ORDER BY.

Este ejemplo muestra cómo podemos combinar las cláusulas WHERE, ORDER BY y GROUP BY junto con INNER JOIN para realizar consultas más complejas y específicas en SQL. La tabla de resultados de esta consulta será:

La tabla de resultados muestra el nombre de cada departamento y su salario promedio. En este caso, solo se muestran los departamentos cuyo salario promedio es mayor que 3000, y están ordenados por salario promedio de manera descendente.

LEFT JOIN: Cómo unir por la izquierda en SQL

LEFT JOIN es la segunda cláusula más utilizada después de INNER JOIN en SQL para combinar dos o más tablas basadas en una condición especificada, devolviendo todos los registros de la tabla de la izquierda (primera tabla mencionada en la cláusula JOIN) y los registros coincidentes de la tabla de la derecha (segunda tabla mencionada en la cláusula JOIN).

¿Cuándo usar LEFT JOIN?

El uso de un LEFT JOIN en SQL es apropiado en varias situaciones, especialmente cuando quieres asegurarte de incluir todos los registros de una tabla, independientemente de si hay coincidencias en la tabla a la que estás uniendo.

Sintaxis de LEFT JOIN

La tabla de la izquierda se especifica después de FROM, mientras que la tabla de la derecha se une utilizando LEFT JOIN, seguida de la condición de unión con la cláusula ON. La sintaxis básica del LEFT JOIN es la siguiente:

SELECT columna(s)
FROM tabla_izquierda
LEFT JOIN tabla_derecha
ON tabla_izquierda.columna = tabla_derecha.columna;

Coincidencias y valores NULL usando LEFT JOIN

Si hay coincidencias entre las tablas de la izquierda y la derecha según la condición de unión, se devuelven los registros correspondientes de ambas tablas. Sin embargo, si no hay coincidencias en la tabla de la derecha, se devuelven valores NULL en las columnas correspondientes de la tabla de la derecha en el resultado de la consulta.

Ejemplo de uso de LEFT JOIN

Supongamos que tenemos dos tablas: “clientes” y “pedidos”. La tabla “clientes” contiene información sobre los clientes de una tienda en línea, mientras que la tabla “pedidos” contiene información sobre los pedidos realizados por los clientes.

Tabla clientes:

Tabla pedidos:

En este ejemplo, observamos que hay un pedido (pedido con id_pedido 104) que está asociado a un cliente que no existe en la tabla “clientes” (cliente con id_cliente 5).

SELECT p.id_pedido, c.nombre AS nombre_cliente, p.producto, p.cantidad
FROM pedidos AS p
LEFT JOIN clientes AS c
ON p.id_cliente = c.id_cliente;

Observa que el LEFT JOIN garantiza que todos los pedidos estén incluidos en el resultado, incluso si no hay un cliente correspondiente en la tabla “clientes”. En el resultado, el pedido con id_pedido 104 no tiene un nombre de cliente asociado (se muestra como NULL), lo que indica que no hay una correspondencia en la tabla “clientes”.

Múltiples uniones usando LEFT JOIN

Si deseas utilizar varias uniones LEFT JOIN en una consulta SQL, puedes seguir un enfoque similar al utilizado anteriormente, pero incluir más de una tabla en la cláusula FROM y agregar las uniones LEFT JOIN adicionales según sea necesario.

SELECT c.id_cliente,
c.nombre AS nombre_cliente,
p.producto
FROM clientes c
LEFT JOIN pedidos pd
ON c.id_cliente = pd.id_cliente
LEFT JOIN productos p
ON pd.id_producto = p.id_producto;

Consultas complejas usando LEFT JOIN

Supongamos que tenemos cuatro tablas: “clientes”, “pedidos”, “productos” y “categorias”. Queremos obtener una lista de clientes junto con la cantidad total de pedidos realizados por cada cliente, pero solo para aquellos clientes que hayan realizado más de tres pedidos. Además, queremos ordenar los resultados por el nombre del cliente en orden ascendente y la cantidad total de pedidos en orden descendente.

Tabla clientes:

Tabla pedidos:

Tabla productos:

Tabla categorias:

Esta consulta devolverá una lista de clientes que hayan realizado más de tres pedidos, junto con la cantidad total de pedidos para cada cliente, ordenados por nombre de cliente en orden ascendente y cantidad total de pedidos en orden descendente.

SELECT c.id_cliente,
c.nombre AS nombre_cliente,
COUNT(p.id_pedido) AS total_pedidos
FROM clientes c
LEFT JOIN pedidos pd ON c.id_cliente = pd.id_cliente
LEFT JOIN productos pr ON pd.id_producto = pr.id_producto
LEFT JOIN categorias cat ON pr.id_categoria = cat.id_categoria
WHERE pd.fecha_pedido >= '2023-01-01'
GROUP BY c.id_cliente, c.nombre
HAVING COUNT(p.id_pedido) > 3
ORDER BY c.nombre ASC, total_pedidos DESC;

En esta consulta:

  1. Utilizamos tres LEFT JOIN para combinar las tablas “clientes”, “pedidos”, “productos” y “categorias” respectivamente.
  2. La condición WHERE filtra los pedidos realizados después del 1 de enero de 2023.
  3. La cláusula GROUP BY agrupa los resultados por ID de cliente y nombre de cliente.
  4. La cláusula HAVING se utiliza para filtrar solo aquellos clientes que hayan realizado más de tres pedidos.
  5. La cláusula ORDER BY ordena los resultados primero por nombre de cliente en orden ascendente y luego por cantidad total de pedidos en orden descendente.

La consulta solo selecciona los clientes que han realizado más de tres pedidos después del 1 de enero de 2023, y luego agrupa los resultados por cliente y cuenta el total de pedidos. La tabla resultante puede ser algo como esta:

Estos resultados muestran que solo Juan y María han realizado más de tres pedidos después del 1 de enero de 2023. Cada uno de ellos ha realizado dos pedidos en total. Los clientes Carlos y Laura no aparecen en la tabla resultante porque no cumplieron con el criterio de la cláusula HAVING, que requiere más de tres pedidos.

RIGHT JOIN: Cómo unir por la derecha en SQL

RIGHT JOIN es la clausula de unión menos frecuente en SQL, que devuelve todas las filas de la tabla de la derecha y las filas de la tabla izquierda que coinciden con las filas de la tabla derecha en la condición de unión. Si no hay coincidencias, se devuelven valores NULL para las columnas de la tabla izquierda.

¿Cuando usar RIGHT JOIN?

RIGHT JOIN puede ser útil cuando deseas asegurarte de que todas las filas de una tabla específica estén presentes en el resultado final, incluso si no hay coincidencias en la otra tabla.

Sintaxis de RIGHT JOIN

La tabla de la izquierda se especifica después de FROM, mientras que la tabla de la derecha se une utilizando RIGHT JOIN, seguida de la condición de unión con la cláusula ON. La sintaxis básica del RIGHT JOIN es similar a la del INNER JOIN:

SELECT * 
FROM tabla_izquierda
RIGHT JOIN tabla_derecha
ON condición_de_unión;

Coincidencias y valores NULL usando RIGHT JOIN

Similar al INNER JOIN, el RIGHT JOIN combina las filas de ambas tablas basadas en una condición de unión especificada. Si no hay una fila correspondiente en la tabla izquierda para una fila en la tabla derecha, se devuelve una fila con valores NULL para las columnas de la tabla izquierda en el resultado.

Ejemplo de uso de RIGHT JOIN

Supongamos que tenemos dos tablas: “alumnos” y “asignaturas”. La tabla “alumnos” contiene información sobre las alumnos de una universidad, incluidos sus nombres y los identificadores de las asignaturas que están cursando. La tabla “asignaturas” contiene información sobre las asignaturas ofrecidas por la universidad, incluidos sus nombres y los identificadores de los alumnos que están matriculados en cada asignatura.

Tabla alumnos:

Tabla asignaturas:

Ahora, vamos a realizar un RIGHT JOIN entre estas tablas para obtener una lista de todas las asignaturas, incluso aquellas que no tienen alumnos matriculados actualmente:

SELECT a.nombre AS nombre_asignatura, 
al.nombre AS nombre_alumno
FROM asignaturas AS a
RIGHT JOIN alumnos AS al
ON a.id_asignatura = al.id_asignatura;

Estamos seleccionando el nombre de la asignatura y el nombre del alumno. Estamos realizando un RIGHT JOIN entre las tablas “asignaturas” y “alumnos” basado en la igualdad entre el identificador de asignatura en ambas tablas. Esto nos dará todas las filas de la tabla “asignaturas”, y las filas de la tabla “alumnos” que coincidan con las filas de la tabla “asignaturas” en la condición de unión. La tabla resultante podría verse así:

Como convertir un LEFT JOIN en un RIGHT JOIN

Las RIGHT JOIN no se usan tan comúnmente como las LEFT JOIN. Una razón clave para esto es que las RIGHT JOIN siempre se pueden reescribir como LEFT JOIN, y debido a que las uniones normalmente se escriben de izquierda a derecha, unir desde la izquierda se siente más intuitivo al construir consultas. Si tenemos la siguiente consulta:

SELECT * 
FROM tabla_izquierda
LEFT JOIN tabla_derecha
ON tabla_izquierda.id =tabla_derecha.id;

Puedes convertirlo en un RIGHT JOIN simplemente intercambiando el orden de las tablas y cambiando “LEFT JOIN” por “RIGHT JOIN”:

SELECT * 
FROM tabla_derecha
RIGHT JOIN tabla_izquierda
ON tabla_derecha.id =tabla_izquierda.id;

Al convertir una LEFT JOIN en una RIGHT JOIN, cambia tanto el tipo de unión como el orden de las tablas para obtener resultados equivalentes. Obtendrías resultados diferentes si solo cambias el orden de las tablas. El orden de los campos a los que se une con ON no importa.

Es importante tener en cuenta que, aunque puedas convertir un RIGHT JOIN en un LEFT JOIN o viceversa y obtener los mismos resultados, es crucial entender qué está ocurriendo en tu consulta para asegurarte de obtener el resultado deseado y mantener la claridad en tu código.

Múltiples uniones usando RIGHT JOIN

Para usar múltiples RIGHT JOIN en una consulta SQL, simplemente puedes seguir añadiendo tablas y condiciones de unión a tu consulta. Aquí te muestro un ejemplo básico para ilustrar cómo podrías hacerlo:

Supongamos que ahora queremos obtener información sobre los alumnos, las asignaturas que están cursando y los profesores que imparten esas asignaturas. Podemos utilizar múltiples RIGHT JOIN para unir estas tres tablas:

SELECT al.nombre AS nombre_alumno,
asig.nombre AS nombre_asignatura,
prof.nombre AS nombre_profesor
FROM alumnos AS al
RIGHT JOIN asignaturas AS asig
ON al.id_asignatura = asig.id_asignatura
RIGHT JOIN profesores AS prof
ON asig.id_profesor = prof.id_profesor;

Esto nos proporcionará una lista de todos los alumnos, las asignaturas que están cursando y los profesores que imparten esas asignaturas, incluso si no hay coincidencias en alguna de las tablas.

Consultas complejas usando RIGHT JOIN

Supongamos que queremos obtener una lista detallada de todas las asignaturas ofrecidas por la universidad, junto con el nombre de los alumnos que las están cursando y el nombre de los profesores que las imparten. Además, queremos incluir información sobre el promedio de calificaciones de cada alumno en esas asignaturas, pero solo para aquellos alumnos que tienen calificaciones registradas.

Tabla profesores:

Tabla calificaciones:

La consulta para obtener los resultados sería la siguiente:

SELECT asig.nombre AS nombre_asignatura,
al.nombre AS nombre_alumno,
prof.nombre AS nombre_profesor,
AVG(calificacion) AS promedio_calificaciones
FROM asignaturas AS asig
RIGHT JOIN alumnos AS al
ON asig.id_asignatura = al.id_asignatura
RIGHT JOIN profesores AS prof
ON asig.id_profesor = prof.id_profesor
LEFT JOIN calificaciones AS cal
ON al.id_alumno = cal.id_alumno
GROUP BY asig.nombre, al.nombre, prof.nombre
HAVING COUNT(calificacion) > 0;

En esta consulta:

  1. Utilizamos RIGHT JOIN para unir las tablas “asignaturas”, “alumnos” y “profesores” basándonos en las relaciones entre ellas.
  2. Luego, utilizamos LEFT JOIN para unir la tabla “calificaciones” con la tabla “alumnos” para obtener información sobre las calificaciones de los alumnos en las asignaturas.
  3. Utilizamos la función AVG() para calcular el promedio de las calificaciones de cada alumno en cada asignatura.
  4. Agrupamos los resultados por el nombre de la asignatura, el nombre del alumno y el nombre del profesor.
  5. Utilizamos la cláusula HAVING para asegurarnos de que solo se incluyan en el resultado aquellos alumnos que tienen al menos una calificación registrada.

Esta consulta proporcionará una lista detallada de todas las asignaturas junto con el nombre de los alumnos que las están cursando, el nombre de los profesores que las imparten y el promedio de calificaciones de cada alumno, limitado a los alumnos que tienen calificaciones registradas. La tabla resultante sería la siguiente:

¿Que he aprendido con este artículo?

¡Espero que este artículo te haya sido útil al aprender sobre las sentencias de unión en SQL! Recuerda que practicar regularmente es fundamental para mejorar tus habilidades. Te recomiendo realizar ejercicios prácticos, ya que te permitirán dominar estas sentencias y te ayudarán a destacarte como un analista de datos altamente competente.

En resumen, los aspectos clave que hemos abordado en este artículo son:

  • Definición y tipos de relaciones en bases de datos.
  • Uso de INNER JOIN para combinar filas de tablas basadas en una condición de unión.
  • Importancia y ejemplos de consultas SQL utilizando INNER JOIN.
  • Concepto de LEFT JOIN para incluir todos los registros de la tabla de la izquierda y los coincidentes de la derecha.
  • Utilidad y ejemplos prácticos de LEFT JOIN en consultas SQL.
  • Concepto de RIGHT JOIN para incluir todos los registros de la tabla de la derecha y los coincidentes de la izquierda.
  • Ejemplos y aplicación de RIGHT JOIN en consultas SQL.
  • Convertir RIGHT JOIN en LEFT JOIN y viceversa.
  • Ejemplos de consultas complejas utilizando múltiples UNIONES con LEFT y RIGHT JOIN.
  • Importancia de utilizar WHERE, GROUP BY y ORDER BY con INNER, LEFT y RIGHT JOIN.

--

--

Nicolás Urrego

Data Scientis | Data Analyst | Data Base | Machine Learning | Communicator | El mundo de datos en español para descubrir, aprender y compartir. 💡👨‍💻📈