La instrucción SQL RIGHT JOIN (o RIGHT OUTER JOIN) es un tipo de unión entre 2 tablas que retorna los registros de la tabla a la derecha (right) aunque no encuentre coincidencia con la tabla izquierda. Si hay un registro en la tabla derecha que no puede encontrar una coincidencia en la tabla izquierda, las columnas de la tabla izquierda serán NULL.
¿Cuándo usar Right JOIN en SQL Server?
Si desea seleccionar los registros de la tabla del lado derecho, incluidos los registros que tienen un valor de clave externa nulo, debe usar la combinación SQL RIGHT JOIN.
Para simplificar la definición anterior, podemos decir que si desea recuperar todas las filas coincidentes de las tablas involucradas en la unión, así como las filas que no coinciden de la tabla del lado derecho, entonces necesita usar Right Outer Join en SQL Server.
Sintaxis SQL RIGHT JOIN
Este comando SQL se utiliza de la siguiente manera:
SELECT *
FROM Nombre_table1
RIGHT JOIN Nombre_table2 ON Nombre_table1.id_codigo = Nombre_table2.fk_id_codigo
La sintaxis de esta consulta SQL RIGHT JOIN, también puede ser así:
SELECT *
FROM Nombre_table1
RIGHT OUTER JOIN Nombre_table2 ON Nombre_table1.id = Nombre_table2.fk_id
Esta sintaxis SQL RIGHT JOIN establece que debe enumerar todas las filas de la Nombre_tabla1 y Nombre_tabla2 (tabla a la derecha) y mostrar los datos asociados de la Nombre_tabla1 si hay una coincidencia entre la Nombre_table1.ID y Nombre_table2 FK_ID 2. Si no hay coincidencia, se mostrará el registro Nombre_table2 y todas las columnas Nombre_table1 serán NULL.
Ejemplo SQL RIGHT JOIN
Tomemos el ejemplo de una base de datos que contiene usuarios y un historial de compras de esos usuarios. Estas 2 tablas están conectadas entre sí gracias a la columna usuario_id de la tabla de pedidos. Esto le permite saber qué usuario está asociado con una compra.
Tabla de usuarios:
id | pre_nom | nombre | correo electrónico | ciudad | activo |
---|---|---|---|---|---|
1 | Querido | Marechal | marechal@example.com | París | 1 |
2 | Esmée | Ana | esmee.lefort@example.com | Lyon | 0 |
3 | Marina | Paul | m.prevost@example.com | Lille | 1 |
4 | Luna | Pedro | lucrolland@example.com | Marsella | 1 |
Tabla de compra:
usuario_id | date_achat | num_fact | prix_total |
---|---|---|---|
1 | 2013-01-23 | A00103 | 203.14 |
1 | 2013-02-14 | A00104 | 124.00 |
2 | 2013-02-17 | A00105 | 149.45 |
3 | 2013-02-21 | A00106 | 235.35 |
5 | 2013-03-02 | A00108 | 47.58 |
Para mostrar todos los comandos con el nombre del usuario correspondiente normalmente es habitual utilizar INNER JOIN en SQL. Desafortunadamente, si el usuario ha sido eliminado de la tabla, entonces no devuelve la compra. El uso de SQL RIGHT JOIN le permite devolver todas las compras y mostrar el nombre del usuario si existe. Para ello es necesario utilizar esta consulta:
SELECT id, pre_nom, nom,
usuario_id, fecha_achat, num_fact
FROM usuario
RIGHT JOIN compra ON usuario_id= compra.utilisateur_id
Resultados:
id | pre_nom | nom | usuario_id | fecha_achat | num_fact |
---|---|---|---|---|---|
1 | Querido | Marechal | 1 | 2013-01-23 | A00103 |
1 | Querido | Marechal | 1 | 2013-02-14 | A00104 |
2 | Esmée | Ana | 2 | 2013-02-17 | A00105 |
3 | Marina | Paul | 3 | 2013-02-21 | A00106 |
NULO | NULO | NULO | 5 | 2013-03-02 | A00107 |
Este resultado muestra que la factura A00108 está vinculada al número de usuario 5. Sin embargo, este usuario no existe o ya no existe. Gracias a SQL RIGHT JOIN, la compra sigue apareciendo pero la información relacionada con el usuario se sustituye por NULL.
Conclusión
Aquí hay una lista de algunos consejos y trucos simples que debe saber sobre la operación RIGHT JOIN:
- RIGHT JOIN y RIGHT OUTER JOIN son lo mismo. El nombre completo de RIGHT JOIN es técnicamente RIGHT OUTER JOIN. Si quisiera ser explícito, podría incluir la palabra ‘EXTERIOR’ en su consulta, pero comprenda que no es necesario. La palabra ‘EXTERIOR’ es opcional .
- Como se discutió anteriormente, RIGHT JOIN es menos común que LEFT JOIN. Ya hemos discutido cómo las consultas RIGHT JOIN se pueden escribir como LEFT JOIN por lo general. Esta es la razón por la que no se ven a menudo en la naturaleza . Pero al menos ahora entiendes cómo funcionan.
- Esta es la diferencia clave entre SQL RIGHT JOIN e INNER JOIN. Cuando una combinación interna solo devuelve filas que coinciden con la condición de combinación, en una combinación externa derecha, se garantiza que todas las filas de las tablas derechas se incluyen en el resultado.