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

RIGHT JOIN en SQL: Un Tutorial para Principiantes

Aprenda RIGHT JOIN, un comando crucial para cualquier especialista en SQL. Nuestro artículo desglosa esta técnica esencial, ayudando a los principiantes a navegar y aplicar RIGHT JOIN en sus consultas de bases de datos sin esfuerzo.

En SQL, RIGHT JOIN (también conocido como RIGHT OUTER JOIN) es crucial para manejar datos de forma eficaz. Este artículo es una guía para principiantes sobre SQL RIGHT JOIN, una técnica esencial para combinar diferentes tablas de datos. Te guiaremos a través de los detalles específicos de RIGHT JOIN, explicando cómo se diferencia de otros tipos de join en la gestión de datos. Únase a nosotros para descubrir cómo RIGHT JOIN en SQL puede mejorar sus habilidades de gestión de datos.

Para consolidar su comprensión de las uniones, incluyendo RIGHT JOIN, el cursoTipos de JOIN en SQL en LearnSQL.es es muy recomendable. Este curso interactivo está diseñado para dotar a los principiantes de las habilidades esenciales de SQL, asegurando que puedan manejar escenarios reales de bases de datos con eficacia.

Comprensión de las uniones en SQL

En SQL, una unión es una función fundamental que combina datos de dos tablas basándose en una columna coincidente. Es esencial para tareas en las que la información se almacena en diferentes tablas y debe visualizarse de forma conjunta. Por ejemplo, si tienes una tabla con datos de empleados y otra con datos de departamentos, una unión puede ayudarte a ver qué empleado pertenece a qué departamento.

Entre los distintos tipos de uniones, RIGHT JOIN es una técnica clave. Puede que no se utilice tan comúnmente como INNER JOIN, pero es vital para una comprensión completa de SQL.

Presentación de nuestros datos de ejemplo

Tabla Restaurantes

RestaurantIDNameOpeningYear
1Galactic Diner2018
2The Enchanted Fork2020
3Cove Café2019
4The Mystic Pizzeria2024

Esta tabla enumera varios restaurantes junto con el año en que abrieron. En particular, "The Mystic Pizzeria" es un restaurante recién abierto que aún no tiene valoraciones.

Tabla de valoraciones

RatingIDRestaurantIDRatingReviewer
114.8Alice
224.3Bob
314.9Charlie
434.0Dana
524.2Erin
615.0Frank
714.7Georgia

Esta tabla muestra las valoraciones de los clientes. Las valoraciones están vinculadas a los restaurantes por el ID del restaurante.

INNER JOIN vs. RIGHT JOIN en SQL

En esta sección, exploraremos las diferencias clave entre RIGHT JOIN y INNER JOIN, dos tipos importantes de uniones en SQL.

INNER JOIN

INNER JOIN es el tipo más común de unión. Se utiliza para combinar filas de dos tablas. Devuelve sólo las filas en las que hay un valor coincidente en ambas tablas. Si una fila de una tabla no tiene una coincidencia correspondiente en la otra tabla, no aparecerá en el conjunto de resultados.

Apliquemos un INNER JOIN a nuestro conjunto de datos de ejemplo. Queremos averiguar las valoraciones que ha recibido cada restaurante.

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear, 
  Ratings.Rating, 
  Ratings.Reviewer
FROM Restaurants
INNER JOIN Ratings 
ON Restaurants.RestaurantID = Ratings.RestaurantID;

Esta consulta une la tabla Restaurants con la tabla Ratings basándose en su columna común RestaurantID. En la cláusula FROM, enumeramos la primera tabla. A continuación, utilizamos la palabra clave INNER JOIN, seguida de la cláusula ON y la condición de unión. La condición de unión determina cómo combinamos la información de las dos tablas: en este caso, las filas deben tener el mismo ID de restaurante.

Este es el resultado de la consulta:

RatingIDRestaurantIDRatingReviewer
114.8Alice
224.3Bob
314.9Charlie
434.0Dana
524.2Erin
615.0Frank
714.7Georgia

En este resultado, cada entrada de la tabla Restaurants que tiene una valoración correspondiente en la tabla Ratings de la tabla. En particular, "The Mystic Pizzeria" no aparece en el resultado. A pesar de figurar en la tabla Restaurants no tiene ninguna entrada correspondiente en la tabla Ratings por lo que queda excluida de los resultados. Esto ejemplifica la naturaleza selectiva de INNER JOIN, que se centra en la intersección de datos entre dos tablas.

RIGHT JOIN (RIGHT OUTER JOIN)

RIGHT JOIN, también conocida como RIGHT OUTER JOIN, devuelve todas las filas de la tabla derecha (enumeradas después de JOIN), junto con las filas coincidentes de la tabla izquierda (enumeradas después de FROM). Si no hay ninguna coincidencia, el conjunto de resultados seguirá incluyendo esa fila de la tabla derecha. Sin embargo, la información que falte de la tabla izquierda se mostrará como NULL.

Una RIGHT JOIN puede devolver más filas que una INNER JOIN si hay filas en la tabla derecha que no tienen coincidencias en la tabla izquierda.

Sintaxis de RIGHT JOIN

La sintaxis básica de RIGHT JOIN en SQL es la siguiente:

SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

Aquí table1 y table2 son las dos tablas que está uniendo. La cláusula ON especifica la condición para unir las tablas. Usualmente, es una igualdad entre las dos columnas seleccionadas.

Un ejemplo básico de RIGHT JOIN

Para ilustrar esto, consideremos un escenario donde queremos listar todos los restaurantes y cualquier calificación que puedan tener. Queremos asegurarnos de que todos los restaurantes están incluidos en el resultado de nuestra consulta, independientemente de si han sido valorados o no. Este es un caso de uso perfecto para RIGHT JOIN, dado que nuestro objetivo es conservar todos los registros de la tabla Restaurants tabla.

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear, 
  Ratings.Rating, 
  Ratings.Reviewer
FROM Ratings
RIGHT JOIN Restaurants 
ON Ratings.RestaurantID = Restaurants.RestaurantID;

He aquí los resultados:

NameOpeningYearRatingReviewer
Galactic Diner20184.8Alice
The Enchanted Fork20204.3Bob
Galactic Diner20184.9Charlie
Cove Café20194.0Dana
The Enchanted Fork20204.2Erin
Galactic Diner20185.0Frank
Galactic Diner20184.7Georgia
The Mystic Pizzeria2024NULLNULL

Cómo funciona RIGHT JOIN

Lógicamente, un RIGHT JOIN funciona mirando primero todas las filas de la tabla derecha, que en nuestro ejemplo es la tabla Restaurants tabla. Para cada fila de esta tabla, intenta encontrar una fila coincidente en la tabla izquierda (Ratings), basándose en la expresión de igualdad definida en la cláusula ON.

  • Filas coincidentes: Para cada restaurante que haya recibido al menos una valoración, la consulta combina los detalles del restaurante con los detalles de su valoración. Esto incluye restaurantes como "Galactic Diner" y "Cove Café", que tienen entradas coincidentes en el campo Ratings
  • Filas no coincidentes: "The Mystic Pizzeria" aún no ha recibido ninguna valoración, pero la consulta lo incluye en el resultado. Sin embargo, como no hay valoraciones coincidentes, las columnas Rating y Reviewer de este restaurante se rellenan con NULL. Esto significa que RIGHT JOIN es especialmente valiosa cuando el objetivo es conservar una vista completa de los registros de una tabla, independientemente de la existencia de registros coincidentes en la otra tabla.

La diferencia clave entre RIGHT JOIN e INNER JOIN

La principal diferencia entre ambas radica en cómo tratan las filas que no coinciden:

  • INNER JOIN excluye las filas que no coinciden en ambas tablas.
  • RIGHT JOIN incluye todas las filas de la tabla derecha, independientemente de si hay una coincidencia en la tabla izquierda. Rellena los valores que faltan con NULL.

Comprender esta distinción es crucial para decidir qué tipo de unión utilizar en función de los requisitos de recuperación de datos de la consulta.

RIGHT JOIN vs. LEFT JOIN

El concepto de RIGHT JOIN es más fácil de entender cuando se comprende su relación con LEFT JOIN. Esencialmente, RIGHT JOIN y LEFT JOIN son dos caras de la misma moneda. Mientras que LEFT JOIN devuelve todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha, RIGHT JOIN hace lo contrario. Devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda.

En sintaxis SQL, cambiar una consulta de RIGHT JOIN a LEFT JOIN (o viceversa) es tan sencillo como invertir el orden de las tablas en la unión y cambiar el tipo de unión. Esta doble naturaleza las hace funcionalmente similares, pero con un enfoque en tablas diferentes en la operación de unión.

La consulta del ejemplo anterior también podría escribirse con LEFT JOIN:

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear, 
  Ratings.Rating, 
  Ratings.Reviewer
FROM Restaurants 
LEFT JOIN Ratings
ON Ratings.RestaurantID = Restaurants.RestaurantID;

Cambiamos RIGHT JOIN por LEFT JOIN. También cambiamos el orden de las tablas. La consulta devuelve el mismo resultado que nuestro ejemplo RIGHT JOIN.

Por qué es más común LEFT JOIN

En la práctica, LEFT JOIN se utiliza con más frecuencia que RIGHT JOIN. Esta preferencia se debe en gran medida a la forma en que la gente piensa y estructura sus consultas SQL. Normalmente, los usuarios de SQL comienzan con una tabla primaria (la tabla de la izquierda en LEFT JOIN) y, a continuación, introducen datos adicionales de otras tablas según sea necesario.

Dado que el orden de lectura de izquierda a derecha coincide con el modo en que se conceptualizan y escriben las consultas, LEFT JOIN resulta más intuitivo. Esto no hace que RIGHT JOIN sea menos importante; simplemente se utiliza con menos frecuencia debido al flujo natural del desarrollo de consultas SQL.

Cuando Usar RIGHT JOIN

Aunque menos común, RIGHT JOIN tiene su lugar. Resulta especialmente útil en situaciones en las que el punto de partida son los datos secundarios (la tabla derecha) y se desea incluir o investigar su relación con los datos primarios (la tabla izquierda). Bajotanding both LEFT and RIGHT JOINañade flexibilidad a sus habilidades de consulta SQL, permitiéndole abordar los problemas de datos desde diferentes ángulos.

Ejemplos y explicaciones de RIGHT JOIN

Uso de Restaurants y Ratings cambiemos las tablas para proporcionar ejemplos que expliquen el resultado de RIGHT JOIN, centrándonos en la inclusión de todos los restaurantes, tengan o no valoraciones.

Ejemplo 1: Restaurantes con una valoración media superior a 4,5

Queremos listar todos los restaurantes que tengan una valoración media superior a 4,5. Queremos incluir sus valoraciones (si están disponibles).

SELECT 
  Restaurants.Name, 
  AVG(Ratings.Rating) AS AverageRating
FROM Restaurants
RIGHT JOIN Ratings 
ON Restaurants.RestaurantID = Ratings.RestaurantID
GROUP BY Restaurants.Name
HAVING AVG(Ratings.Rating) > 4.5;

Funcionamiento

  • Esta consulta asocia la tabla Ratings con la tabla Restaurants mediante RIGHT JOIN.
  • Calcula la valoración media de cada restaurante mediante la función AVG()
  • Filtra para incluir sólo los restaurantes con una valoración media superior a 4,5. Para ello utiliza la cláusula HAVING que se aplica a los resultados agregados.

Resultado

NameAverageRating
Galactic Diner4.85

Explicación

"Galactic Diner" es el único restaurante con una media de valoraciones superior a 4,5. El segundo restaurante con más valoraciones es "El tenedor encantado"; como su valoración media es de 4,25, no se muestra en el resultado final.

Ejemplo 2. Restaurantes sin valoración Restaurantes sin valoración

Objetivo: Listar todos los restaurantes que no han recibido ninguna valoración.

Consulta SQL

SELECT 
  Restaurants.Name, 
  Restaurants.OpeningYear
FROM Ratings
RIGHT JOIN Restaurants 
ON Ratings.RestaurantID = Restaurants.RestaurantID
WHERE Ratings.Rating IS NULL;

Funcionamiento

  • Esta consulta utiliza RIGHT JOIN para garantizar que se incluyan todos los restaurantes, incluso los que no tienen entradas coincidentes en el campo Ratings
  • Filtra los restaurantes que no han recibido ninguna valoración buscando NULL en el campo Ratings

Resultado

NameOpeningYear
The Mystic Pizzeria2024

Explicación

"The Mystic Pizzeria" aparece solo aquí, ya que es el único que no ha sido valorado. Tal vez se trate de un restaurante nuevo que aún no tiene valoraciones. Este ejemplo muestra la eficacia de RIGHT JOIN para incluir restaurantes independientemente de sus valoraciones.

Ejemplo 3: El restaurante con más valoraciones

Objetivo: Identificar el restaurante o restaurantes con el mayor número de valoraciones como indicador de popularidad.

Consulta SQL

SELECT 
  Restaurants.Name, 
  COUNT(Ratings.RatingID) AS NumberOfRatings
FROM Ratings
RIGHT JOIN Restaurants 
ON Ratings.RestaurantID = Restaurants.RestaurantID
GROUP BY Restaurants.Name
ORDER BY NumberOfRatings DESC
LIMIT 1;

Funcionamiento

  • Mediante RIGHT JOIN, la consulta cuenta las valoraciones de cada restaurante para garantizar que se tienen en cuenta todos los restaurantes.
  • Ordena los resultados para destacar el restaurante con el mayor número de valoraciones.

Resultado

NameNumberOfRatings
Galactic Diner5

Explicación

"Galactic Diner" aparece como el restaurante con más valoraciones, lo que indica su popularidad. Este escenario utiliza RIGHT JOIN para devolver todos los restaurantes y, a continuación, aprovecha las funciones agregadas para deducir el más valorado.

Consejos prácticos para un RIGHT JOIN eficaz

Por último, compartiremos consejos prácticos para ayudarle a utilizar eficazmente RIGHT JOINs en SQL.

Comprender el Orden de las Tablas

  • Enfoque en la Tabla Correcta: En un RIGHT JOIN, el enfoque está en la tabla correcta. La tabla correcta es la que estará completamente representada en los resultados. Asegúrese de que la tabla cuyos datos desea conservar en su totalidad, independientemente de cualquier coincidencia en la otra tabla, se coloca en el lado derecho de la unión.
  • Visualización de los datos: Antes de escribir la consulta, visualice o haga un esquema de las tablas y sus relaciones. Esto puede ayudarle a identificar claramente qué tabla debe situarse a la derecha.

Manejo de valores nulos

  • Espere NULLs: En RIGHT JOIN, las filas de la tabla de la derecha sin filas coincidentes en la tabla de la izquierda darán como resultado valores NULL en las columnas de la tabla de la izquierda. Esté preparado para manejar estos valores NULL en su consulta, ya sea filtrándolos o utilizándolos en su análisis.

Combinación de RIGHT JOIN con otras cláusulas

  • Uso de Agregados y GROUP BY: Las funciones de agregación y GROUP BY pueden utilizarse eficazmente con RIGHT JOINs para resumir datos, por ejemplo, para encontrar restaurantes con una valoración media de 4,5 o más, como se muestra en el Ejemplo 1.
  • Filtre con cuidado: Cuando utilice cláusulas WHERE con RIGHT JOINs, recuerde que los filtros de la tabla izquierda pueden excluir filas, reduciendo la eficacia de RIGHT JOIN. Los filtros de la tabla derecha excluirán filas de la tabla derecha; también podrían afectar a las filas coincidentes de la tabla izquierda. Esto se ha ilustrado en el Ejemplo 2, la consulta que muestra restaurantes sin valoraciones.

Cómo evitar errores comunes con RIGHT JOIN

  • No lo Confunda con LEFT JOIN: Tenga cuidado de no confundir la lógica de LEFT JOIN con RIGHT JOIN. Aunque son similares, su aplicación y resultados pueden ser significativamente diferentes debido al orden de las tablas.
  • Compruebe si hay productos cartesianos no intencionados: Tenga cuidado con los productos cartesianos involuntarios, en los que se obtiene un conjunto de resultados mucho mayor de lo previsto. Esto puede ocurrir si la condición de unión se especifica incorrectamente o se omite.

Más información sobre RIGHT JOINs

La mejor manera de sentirse cómodo con RIGHT JOIN es a través de la práctica. Comience repasando nuestro curso interactivo Tipos de JOIN en SQL interactivo. Contiene más de 90 ejercicios prácticos para practicar todos los tipos importantes de Tipos de JOIN en SQL que se utilizan ampliamente en SQL, incluido RIGHT JOIN.

También puedes descargarte nuestra hoja de trucos Tipos de JOIN en SQL . Se trata de una práctica guía de referencia de los comandos SQL más comunes, incluido RIGHT JOIN. Resulta útil cuando se necesita recordar rápidamente la sintaxis y las mejores prácticas, y puede ayudar significativamente a utilizar Tipos de JOIN en SQL al escribir consultas.

Lee nuestros artículos sobre cómo practicar Tipos de JOIN en SQL y SQL Joins: 12 Preguntas de Práctica con Respuestas Detalladas.

Si realmente quieres mejorar tus conocimientos de SQL, prueba nuestro planTodo, para siempre . Te da acceso a todos nuestros cursos de SQL actuales y futuros. Cada mes publicamos un nuevo curso práctico de SQL. Tenemos cursos para todos los niveles de dominio de SQL y en los cuatro dialectos de SQL más populares.

Siga aprendiendo y explorando para liberar todo el potencial de SQL en sus esfuerzos de análisis de datos.