Actividad 4 - Comando Join


INNER JOIN:

Esta cláusula busca coincidencias entre 2 tablas, en función a una columna que tienen en común. De tal modo que sólo la intersección se mostrará en los resultados.




Por ejemplo, si queremos listar a los empleados e indicar el nombre del departamento al que pertenecen, podemos hacer lo siguiente:

SELECT * 
FROM Empleados E 
JOIN Departamentos D 
ON E.DepartamentoId = D.Id

Con esto, nuestro resultado será:


Y apartir de aquí podemos notar lo siguiente:

  • El empleado "Williams" no aparece en los resultados, ya que no pertenece a ningún departamento existente.
  • El departamento "Marketing" tampoco aparece, ya que ningún empleado pertenece a dicho departamento.

¿Por qué ocurre esto? Porque JOIN muestra como resultado la intersección de ambas tablas.

También hay que tener en cuenta que, en los resultados vemos 4 columnas. Las 2 primeras se corresponden con la tabla Empleados y las últimas con Departamentos.

Esto ocurre porque estamos seleccionando todas las columnas con un *.

Si queremos, podemos ser específicos y seleccionar sólo 2 columnas (además de asignarles un alias):

SELECT 

 E.Nombre as 'Empleado', 

 D.Nombre as 'Departamento' 

FROM Empleados E 

JOIN Departamentos D 

ON E.DepartamentoId = D.Id

Y así obtener:



LEFT JOIN:

A diferencia de un INNER JOIN, donde se busca una intersección respetada por ambas tablas, con LEFT JOIN damos prioridad a la tabla de la izquierda, y buscamos en la tabla derecha.

Si no existe ninguna coincidencia para alguna de las filas de la tabla de la izquierda, de igual forma todos los resultados de la primera tabla se muestran



He aquí una consulta de ejemplo:

SELECT 
 E.Nombre as 'Empleado', 
 D.Nombre as 'Departamento' 
FROM Empleados E 
LEFT JOIN Departamentos D 
ON E.DepartamentoId = D.Id

  • La tabla Empleados es la primera tabla en aparecer en la consulta (en el FROM), por lo tanto ésta es la tabla LEFT (izquierda), y todas sus filas se mostrarán en los resultados.
  • La tabla Departamentos es la tabla de la derecha (aparece luego del LEFT JOIN). Por lo tanto, si se encuentran coincidencias, se mostrarán los valores correspondientes, pero sino, aparecerá NULL en los resultados.

RIGHT JOIN:

En el caso de RIGHT JOIN la situación es muy similar, pero aquí se da prioridad a la tabla de la derecha.


De tal modo que si usamos la siguiente consulta, estaremos mostrando todas las filas de la tabla de la derecha:

SELECT 
 E.Nombre as 'Empleado', 
 D.Nombre as 'Departamento' 
FROM Empleados E 
RIGHT JOIN Departamentos D 
ON E.DepartamentoId = D.Id

La tabla de la izquierda es Empleados, mientras que Departamentos es la tabla de la derecha.

La tabla asociada al FROM será siempre la tabla LEFT, y la tabla que viene después del JOIN será la tabla RIGHT.

Entonces el resultado mostrará todos los departamentos al menos 1 vez.

Y si no hay ningún empleado trabajando en un departamento determinado, se mostrará NULL. Pero el departamento aparecerá de igual forma.

FULL JOIN:

Mientras que LEFT JOIN muestra todas las filas de la tabla izquierda, y RIGHT JOIN muestra todas las correspondientes a la tabla derecha, FULL OUTER JOIN (o simplemente FULL JOIN) se encarga de mostrar todas las filas de ambas tablas, sin importar que no existan coincidencias (usará NULL como un valor por defecto para dichos casos).

Para nuestro ejemplo, ocurre lo siguiente:

SELECT 
 E.Nombre as 'Empleado', 
 D.Nombre as 'Departamento' 
FROM Empleados E 
FULL JOIN Departamentos D 
ON E.DepartamentoId = D.Id

Se muestra el empleado "Williams" a pesasr que no está asignado a ningún departamento, y se muestra el departamento de "Marketing" a pesar que aún nadie está trabajando allí:


REFERENTE:

Ramos, J. (s. f.). ¿Cómo funciona INNER JOIN, LEFT JOIN, RIGHT JOIN y FULL JOIN? Programación y más. Recuperado 27 de septiembre de 2022, de https://programacionymas.com/blog/como-funciona-inner-left-right-full-join 

Trabajo realizado en clase:

TXT:

Excels de clase:

¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar