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