RIGHT JOIN en SQL: Un Tutorial para Principiantes
Índice
- Comprensión de las uniones en SQL
- Presentación de nuestros datos de ejemplo
- INNER JOIN vs. RIGHT JOIN en SQL
- RIGHT JOIN vs. LEFT JOIN
- Ejemplos y explicaciones de RIGHT JOIN
- Consejos prácticos para un RIGHT JOIN eficaz
- Más información sobre RIGHT JOINs
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
RestaurantID | Name | OpeningYear |
---|---|---|
1 | Galactic Diner | 2018 |
2 | The Enchanted Fork | 2020 |
3 | Cove Café | 2019 |
4 | The Mystic Pizzeria | 2024 |
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
RatingID | RestaurantID | Rating | Reviewer |
---|---|---|---|
1 | 1 | 4.8 | Alice |
2 | 2 | 4.3 | Bob |
3 | 1 | 4.9 | Charlie |
4 | 3 | 4.0 | Dana |
5 | 2 | 4.2 | Erin |
6 | 1 | 5.0 | Frank |
7 | 1 | 4.7 | Georgia |
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:
RatingID | RestaurantID | Rating | Reviewer |
---|---|---|---|
1 | 1 | 4.8 | Alice |
2 | 2 | 4.3 | Bob |
3 | 1 | 4.9 | Charlie |
4 | 3 | 4.0 | Dana |
5 | 2 | 4.2 | Erin |
6 | 1 | 5.0 | Frank |
7 | 1 | 4.7 | Georgia |
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:
Name | OpeningYear | Rating | Reviewer |
---|---|---|---|
Galactic Diner | 2018 | 4.8 | Alice |
The Enchanted Fork | 2020 | 4.3 | Bob |
Galactic Diner | 2018 | 4.9 | Charlie |
Cove Café | 2019 | 4.0 | Dana |
The Enchanted Fork | 2020 | 4.2 | Erin |
Galactic Diner | 2018 | 5.0 | Frank |
Galactic Diner | 2018 | 4.7 | Georgia |
The Mystic Pizzeria | 2024 | NULL | NULL |
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
yReviewer
de este restaurante se rellenan con NULL. Esto significa queRIGHT 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
añade flexibilidad a sus habilidades de consulta SQL, permitiéndole abordar los problemas de datos desde diferentes ángulos.LEFT
and RIGHT JOIN
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 tablaRestaurants
medianteRIGHT 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
Name | AverageRating |
---|---|
Galactic Diner | 4.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 campoRatings
- Filtra los restaurantes que no han recibido ninguna valoración buscando
NULL
en el campoRatings
Resultado
Name | OpeningYear |
---|---|
The Mystic Pizzeria | 2024 |
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
Name | NumberOfRatings |
---|---|
Galactic Diner | 5 |
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 JOIN
s 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
NULL
s: EnRIGHT JOIN
, las filas de la tabla de la derecha sin filas coincidentes en la tabla de la izquierda darán como resultado valoresNULL
en las columnas de la tabla de la izquierda. Esté preparado para manejar estos valoresNULL
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 yGROUP BY
pueden utilizarse eficazmente conRIGHT JOIN
s 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
conRIGHT JOIN
s, recuerde que los filtros de la tabla izquierda pueden excluir filas, reduciendo la eficacia deRIGHT 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 deLEFT JOIN
conRIGHT 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.