Ejercicios con JOINS


Hemos visto como usar registros de una tabla para encontrar registros de otra tabla, uniendo ambas tablas con JOIN y enlazándolas con una condición ON en la cual colocamos el campo en común. O sea, hacemos un JOIN y asociamos registros de 2 tablas usando el ON buscando coincidencia en los valores del campo que tienen en común ambas tablas.

select * from (Nombre tabla1)
join (nombre tabla 2)
On código(tabla 1)=código(tabla 2);

LEFT JOIN

Un left join se usa para hacer coincidir registros en una tabla (izquierda) con otra tabla (derecha), se genera una fila extra (una por cada valor no encontrado) con todos los campos seteados a null.

Sintaxis:
Se nombran ambas tablas, una a la izquierda del join y la otra a la derecha, y la condición para enlazarlas.
Es importante la posición en que se colocan las tablas en un left join, la tabla de la izquierda es la que se usa para localizar registros en la tabla de la derecha, por lo tanto, estos join no son iguales.

Ejemplo:
Select * from (tabla 1)
Left join (tabla 2)
On (tabla1). Codigo=(tabla 2).código vinculado a tabla 1
Select * from (tabla 2)
Left join (tabla 1)
On (tabla1). Codigo=(tabla 2).código vinculado a tabla 1

Supongamos que tenemos dos entidades: una llamada libro y otra llamada editorial
La primera sentencia opera así:

Por cada valor de código de editorial busca coincidencia en la tabla libro, si no encuentra coincidencia para algún valor, genera una fila seteada a null.
La segunda sentencia opera de modo inverso. Por cada valor de código editorial de libros busca coincidencia en la tabla editorial, si no encuentra coincidencia, setea la fila a null.

USANDO REGISTRO DE LA TABLA DE LA IZQUIERDA SE ENCUENTRAN REGISTROS EN LA TABLA DE LA DERECHA.

LEFT JOIN

También podemos mostrar las editoriales que no están presente en la tabla libro.

RIGHT JOIN

Opera del mismo modo que left join sólo que la búsqueda de coincidencia la realiza de modo inverso, es decir, los roles de las tablas se invierten.
BUSCA COINCIDENCIA DE VALORES DESDE LA TABLA DE LA DERECHA EN LA TABLA DE LA IZQUIERDA Y SI UN VALOR DE LA TABLA DE LA DERECHA NO ENCUENTRA COINCIDENCIA EN LA TABLA DE LA IZQUIERDA, SE GENERA UNA FILA EXTRA (una por cada valor no encontrado) con todos los campos seteados a null.

Ejemplo:

CROSS JOIN

Cross join retorna los registros de todas las tablas implicadas en la unión, devuelve el producto cartesiano. No es muy utilizado.

Ejemplo