Ejercicios con Join

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.

Ejemplo:
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.

*Mostrar las editoriales que están presentes en a tabla libro junto al titulo del libro .

Sintaxis: select e.nombre,l.libro from editorial as e left join libro as l on e.codigo=l.codigoeditorial where l.codigoeditorial is not null;

* 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.

CROSS JOIN

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

*Otra ejemplo de cross join con una condición

NATURAL JOIN

Se usa cuando los campos por los cuales se enlazan las tablas tienen el mismo nombre.

Tenemos el ejemplo de libro y editorial. Como en ambas tablas, el código de la editorial se denomina 'codigoeditorial' podemos omitir la parte ON que indica los nombres de los campos por el cual se enlazan las tablas, empleando 'NATURAL JOIN', se unirán por el campo que tienen en común.

* Inner join es lo mismo que join. Con inner join, todos los registros no coincidentes son descartados, sólo los coincidentes se muestran en el resultado.

*También se puede usar natural join con left join y right join.

*Es decir, con natural join no se coloca la parte on que especifica los campos por los cuales se enlazan las tablas.

STRAIGHT JOIN

Es igual a join, sólo que la tabla de la izquierda es leída siempre antes que la de la derecha.

VARIABLES DE USUARIO

Cuando buscamos un valor con las funciones de agrupamiento, por ejemplo min(), la consulta nos devuelve el mínimo valor de un campo de una tabla, pero no nos muestra los valores de otros campos del mismo registro.

 Para obtener todos los datos del libro podemos emplear una variable para almacenar el precio más bajo.

Y luego mostrar todos los datos de dicho libro empleando la variable anterior:

Es decir, guardamos en la variable el precio más bajo y luego, en otra sentencia, mostramos los datos de todos los libros cuyo precio es igual al valor de la variable.

Almacenamos el valor y lo recuperamos más adelante, con el fin de poderlos usar en otras sentencias.

La base de datos utilizada se encuentra en el siguiente link

https://drive.google.com/drive/folders/15J3Rvj_0PoMw2iyfwnYmXBCxVIVIY5PR?usp=sharing

Diapositivas


© 2018 Compás Lab S.L,  P° de la Castellana 79, Madrid, 28046
Creado con Webnode
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar