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).codigo vinculado a tabla 1

select * from (tabla 2)

left join (tabla 1)

on (tabla1). codigo=(tabla 2).codigo vinculado a tabla 1


Si queremos saber el nombre de la editorial y los libros enlazados a esa editorial, lo hacemos de la siguiente forma:

Sintaxis:

SELECT e.nombre,l.titulo

FROM editorial AS e

LEFT JOIN libro as l

ON e.codigo = l.codigoeditorial

WHERE l.codigoeditorial IS NOT NULL;


Para mostrar las editoriales que no están presentes en la tabla libro, lo hacemos de la siguiente forma:

Sintaxis:

SELECT e.nombre,l.titulo FROM editorial AS e

LEFT JOIN libro AS l

ON e.codigo = l.codigoeditorial

WHERE l.codigoeditorial IS NULL;


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.

Ejemplo:

SELECT nombre, titulo

FROM libro AS l

RIGHT JOIN editorial AS e

ON e.codigo = l.codigoeditorial;


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:

SELECT l.*,e.*

FROM libro AS l

CROSS JOIN editorial AS e;



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.

Ejemplo:

SELECT titulo, nombre

FROM libro AS l

NATURAL JOIN editorial AS e;

STRAIGHT JOIN


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

Ejemplo:

SELECT nombre, titulo

FROM editorial AS e

JOIN libro AS l

ON e.codigo = l.codigoeditorial;


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.

Ejemplo:

SELECT MIN(precio) FROM libro;

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

Ejemplo:

SELECT @menorprecio:=MIN(precio) FROM libro;

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

Ejemplo:

SELECT * FROM libro

WHERE precio=@menorprecio;

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.

Ejemplo:

SELECT @editorial:=e.nombre

FROM libro AS l

JOIN editorial AS e

ON l.codigoeditorial = e.codigo

WHERE precio=@menorprecio;


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