English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Sentencia SQL RIGHT JOIN
usar JOIN derechoRIGHT JOIN es equivalente aLEFT JOIN
exactamente al revés. Devuelve todas las filas de la tabla derecha y las filas de la tabla izquierda que cumplen con las condiciones de conexión.La unión derecha esun tipo de unión externapor lo que también se conoce comoright outer join.Las otras variantes de unión externa sonPara entender esto claramente, veamos lo siguienteUnión izquierdaUnión completa
Atención:.El diagrama de Venn siguiente ilustra cómo funciona el JOIN derecho.
Unión externa es una unión que incluye filas en el conjunto de resultados, incluso si las filas de las dos tablas a unir pueden no coincidir.employeesPara entender esto claramente, veamos lo siguientedepartmentsY
+--------+--------------+------------+---------+ Tabla. +--------+--------------+------------+---------+ | 1 | Ethan Hunt | 2001-05-01 | 4 | | 2 | Tony Montana | 2002-07-15 | 1 | | 3 | Sarah Connor | 2005-10-18 | 5 | | 4 | Rick Deckard | 2007-01-03 | 3 | | 5 | emp_id | emp_name | hire_date | dept_id | 2008-06-24 | NULL | +--------+--------------+------------+---------+ | +---------+------------------+ | dept_id | dept_name | +---------+------------------+ | 1 | Administration | | 2 | Customer Service | | 3 | Finanzas | | 4 | Recursos Humanos | | 5 | Ventas | +---------+------------------+ | |
Tabla: employees | Tabla: departments |
Ahora, supongamos que desea recuperar los nombres de todos los departamentos y los detalles de los empleados que trabajan en cada departamento. Pero, en la práctica, puede haber departamentos que actualmente no tienen empleados. Bueno, vamos a encontrar la respuesta.
Las siguientes sentencias conectan las tablas employee y department utilizando el campo dept_id genérico, para recuperar todos los departamentos disponibles y los id, nombres y fechas de contratación de los empleados de cada departamento.
SELECT t1.emp_id, t1.emp_name, t1.hire_date, t2.dept_name FROM employees AS t1 RIGHT JOIN departments AS t2 ON t1.dept_id = t2.dept_id ORDER BY dept_name;
Consejo:En la consulta de unión, la tabla de la izquierda es la que aparece primero en la cláusula JOIN, y la tabla de la derecha es la que aparece después.
Ejecutar el comando anterior, obtendrá la siguiente salida:
+--------+--------------+------------+------------------+ | emp_id | emp_name | hire_date | dept_name | +--------+--------------+------------+------------------+ | 2 | Tony Montana | 2002-07-15 | Administration | | NULL | NULL | NULL | NULL | Servicio al Cliente | | 4 | Rick Deckard | 2007-01-03 | Finanzas | | 1 | Ethan Hunt | 2001-05-01 | Recursos Humanos | | 3 | Sarah Connor | 2005-10-18 | Ventas | +--------+--------------+------------+------------------+
Una unión correcta incluye todas las filas de la tabla de departamento en el conjunto de resultados, independientemente de si el departamento_id en la tabla de empleados coincide, porque puede ver claramente que incluso si el departamento no tiene empleados, también incluirá "Customer Service".
Atención:Si en la tabla derecha hay una fila, pero no hay coincidencia en la tabla izquierda, las filas de resultado asociadas incluirán valores NULL de todas las columnas de la tabla izquierda.