|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- # 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
|