1. INNER JOIN
¿Qué hace? ElINNER JOIN devuelve solo las filas que tienen coincidencia en ambas tablas.
Ejemplo: Imagina que tienes dos tablas: empleados y departamentos. La tabla empleados tiene información sobre los empleados, y la tabla departamentos contiene información sobre los departamentos. Quieres obtener una lista de todos los empleados junto con su respectivo departamento, pero solo aquellos empleados que están asignados a un departamento.
Tablas:
-
empleados:id_empleadonombre_empleadoid_departamento
-
departamentos:id_departamentonombre_departamento
departamentos.
2. LEFT JOIN (o LEFT OUTER JOIN)
¿Qué hace? El LEFT JOIN devuelve todas las filas de la tabla izquierda y las filas coincidentes de la tabla derecha. Si no hay coincidencia, se rellenan con NULL.
Ejemplo: Supongamos que quieres obtener una lista de todos los empleados y sus departamentos, pero también necesitas incluir empleados que no estén asignados a ningún departamento.
Tablas:
-
empleados:id_empleadonombre_empleadoid_departamento
-
departamentos:id_departamentonombre_departamento
nombre_departamento será NULL.
3. RIGHT JOIN (o RIGHT OUTER JOIN)
¿Qué hace? El RIGHT JOIN devuelve todas las filas de la tabla derecha y las filas coincidentes de la tabla izquierda. Si no hay coincidencia, se rellenan con NULL.
Ejemplo: Ahora quieres obtener una lista de todos los departamentos y los empleados asignados a cada uno. Quieres asegurarte de que todos los departamentos aparezcan, incluso si no tienen empleados asignados.
Tablas:
-
empleados:id_empleadonombre_empleadoid_departamento
-
departamentos:id_departamentonombre_departamento
nombre_empleado será NULL.
4. FULL JOIN (o FULL OUTER JOIN)
¿Qué hace? El FULL JOIN devuelve todas las filas de ambas tablas, rellenando con NULL donde no hay coincidencia.
Ejemplo: Quieres obtener una lista de todos los empleados y todos los departamentos. Esto incluye tanto empleados sin departamento como departamentos sin empleados.
Tablas:
-
empleados:id_empleadonombre_empleadoid_departamento
-
departamentos:id_departamentonombre_departamento
nombre_departamento será NULL. Si un departamento no tiene empleados, su nombre_empleado será NULL.
Resumen
| Tipo de JOIN | Qué devuelve |
|---|---|
| INNER JOIN | Solo las filas que tienen coincidencia en ambas tablas. |
| LEFT JOIN | Todas las filas de la tabla izquierda, con las coincidencias de la tabla derecha (si las hay). |
| RIGHT JOIN | Todas las filas de la tabla derecha, con las coincidencias de la tabla izquierda (si las hay). |
| FULL JOIN | Todas las filas de ambas tablas, con NULL en las columnas no coincidentes. |