Lección 7 de SQL: UNIONES EXTERNAS

Dependiendo de cómo desee analizar los datos, lo INNER JOIN que usamos en la última lección podría no ser suficiente porque la tabla resultante solo contiene datos que pertenecen a ambas tablas.

Si las dos tablas tienen datos asimétricos, lo que puede suceder fácilmente cuando los datos se ingresan en diferentes etapas, entonces tendríamos que usar un LEFT JOIN, RIGHT JOIN o en su lugar FULL JOIN para asegurarnos de que los datos que necesitamos no queden fuera de los resultados.

  • Consulta de selección con LEFT/RIGHT/FULL JOINs en varias tablas
SELECT column, another_column, …
FROM mytable
INNER/LEFT/RIGHT/FULL JOIN another_table 
    ON mytable.id = another_table.matching_id
WHERE condition(s)
ORDER BY column, … ASC/DESC
LIMIT num_limit OFFSET num_offset;

Al igual que INNER JOIN estas tres nuevas uniones tienen que especificar en qué columna se unirán los datos.

Al unir la tabla A con la tabla B, LEFT JOIN simplemente incluye filas de A independientemente de si se encuentra una fila coincidente en B.

RIGHT JOIN Es lo mismo, pero al revés, manteniendo las filas en B independientemente de si se encuentra una coincidencia en A.

Por último, FULL JOIN simplemente significa que se mantienen las filas de ambas tablas, independientemente de si existe una fila coincidente en la otra tabla.

Al utilizar cualquiera de estas nuevas uniones, probablemente tendrá que escribir lógica adicional para lidiar con NULLs en el resultado y las restricciones (más sobre esto en la próxima lección).

Es posible que vea consultas con estas uniones escritas como LEFT OUTER JOIN, RIGHT OUTER JOIN, o FULL OUTER JOIN, pero la palabra clave OUTER realmente se conserva para compatibilidad con SQL-92 y estas consultas son simplemente equivalentes a LEFT JOIN, RIGHT JOIN, y FULL JOIN respectivamente.

Ejercicio

En este ejercicio, trabajará con una nueva tabla que almacena datos ficticios sobre los empleados del estudio cinematográfico y sus edificios de oficinas asignados. Algunos de los edificios son nuevos, por lo que aún no tienen empleados, pero necesitamos encontrar información sobre ellos de todos modos.

Dado que nuestra base de datos SQL del navegador es algo limitada, solo LEFT JOIN se admite en el siguiente ejercicio.


  1. Encuentra la lista de todos los edificios que tienen empleados.
  2. Encuentra la lista de todos los edificios y su capacidad.
  3. Enumere todos los edificios y los distintos roles de los empleados en cada edificio (incluidos los edificios vacíos)