Material del curso de SQL de la UNACAR 2020
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. # JOINS
  2. 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.
  3. En Mysql, como en la mayoría de las bases de datos relacionales hay diferentes tipos de join.
  4. ## INNER JOIN
  5. 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.
  6. ![](assets/20220116_191801_img_innerjoin.gif)
  7. *Sintaxis*
  8. ```
  9. SELECT column_name(s)
  10. FROM table1
  11. INNER JOIN table2
  12. ON table1.column_name = table2.column_name;
  13. ```
  14. ### Implementación
  15. *Sintaxis*
  16. ```
  17. select c.id, c.nombre, c.categoria_id ,c2.nombre from categorias c
  18. join categorias c2 on c2.id = c.categoria_id
  19. ```
  20. Tambien se pueden relacionar mas de dos tablas
  21. ```
  22. select *
  23. from categorias c
  24. join categoria_producto cp on c.id = cp.categoria_id
  25. join productos p on p.id = cp.producto_id
  26. ```
  27. ## LEFT JOIN
  28. 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.
  29. ![](assets/20220116_192640_img_leftjoin.gif)
  30. *Sintaxis*
  31. ```
  32. SELECT column_name(s)
  33. FROM table1
  34. LEFT JOIN table2
  35. ON table1.column_name = table2.column_name;
  36. ```
  37. ## RIGHT JOIN
  38. 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.
  39. ![](assets/20220116_192835_img_rightjoin.gif)
  40. *Sintaxis*
  41. ```
  42. SELECT column_name(s)
  43. FROM table1
  44. RIGHT JOIN table2
  45. ON table1.column_name = table2.column_name;
  46. ```
  47. ## OUTER JOIN o FULL OUTER JOIN
  48. 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.
  49. ![](assets/20220116_204403_img_fulljoin.gif)
  50. *Sintaxis*
  51. ```
  52. SELECT column_name(s)
  53. FROM table1
  54. FULL OUTER JOIN table2
  55. ON table1.column_name = table2.column_name
  56. WHERE condition;
  57. ```
  58. Para implementarlo en MYSQl tendriamos que usar la union del left join y del right join