Material del curso de SQL de la UNACAR 2020
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

2.2 KiB

JOINS

Los join se usan para recuperar datos de varias tablas al mismo tiempo y las tablas tienen que estar relacionadas de algún modo, normalmente mediante un id.

En Mysql, como en la mayoría de las bases de datos relacionales hay diferentes tipos de join.

INNER JOIN

También se puede usar como join sin nada más. En este caso la sentencia va a devolver los datos que existen las dos tablas que se comparan.

Sintaxis

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

Implementación

Sintaxis

select c.id, c.nombre, c.categoria_id ,c2.nombre from categorias c 
join categorias c2 on c2.id = c.categoria_id  

Tambien se pueden relacionar mas de dos tablas

select *
from categorias c
join categoria_producto cp on c.id = cp.categoria_id
join productos p on p.id = cp.producto_id

LEFT JOIN

En este caso la sentencia va a devolver los datos que tiene en la primera tabla con los datos que tiene en común con la segunda tabla.

Sintaxis

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

RIGHT JOIN

Este caso es como el anterior pero a la inversa, la sentencia va a devolver los datos que tiene en la segunda tabla con los datos que tiene en común con la primera tabla.

Sintaxis

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

OUTER JOIN o FULL OUTER JOIN

En este caso se recuperan todos los datos de ambas tablas. Este tipo de join no es compatible con MySQL y para conseguir un OUTER JOIN hay que usar la unión de sentencias con UNION del INNER JOIN y del LEFT JOIN.En MySQL los UNION tienen que tener el mismo número de campos en el SELECT sino dará error.

Sintaxis

SELECT column_name(s)
FROM table1
FULL OUTER JOIN table2
ON table1.column_name = table2.column_name
WHERE condition;

Para implementarlo en MYSQl tendriamos que usar la union del left join y del right join