No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso Práctico de SQL

Curso Práctico de SQL

Israel Vázquez Morales

Israel Vázquez Morales

Productos cartesianos (JOIN)

6/29
Recursos

Aportes 23

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Esta imagen es muy útil. Se debe tener en cuenta que el full join no aplica para todos los manejadores de bases de datos.

Para ser el curso práctico me parece que tiene mucha teoría… 😐

Las siguientes sentencias son equivalentes:

Tabla1 LEFT JOIN Tabla2
Tabla2 RIGHT JOIN Tabla1

este imágenes son mi formulario me han ayudado mucho mientras aprendo bases de datos:

estas son las mas: usadas:

aqui se mencionan algunas formas de join que son implicitas (semi join):

en estas ultimas se muestran algunas relaciones entre 3 o mas tablas, sin embargo en el poco camino que llevo aprendiendo sql… aun no las he usado:

El producto cartesiano es una operación de la teoría de conjuntos en la que dos o más conjuntos se combinan entre sí. En el modelo de base de datos relacional se utiliza el producto cartesiano para interconectar conjuntos de tuplas en la forma de una tabla. El resultado de esta operación es otro conjunto de tuplas ordenadas, donde cada tupla está compuesta por un elemento de cada conjunto inicial.
Fuente: https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/sql-join/#:~:text=El producto cartesiano es una,la forma de una tabla.

4. PRODUCTOS CARTESIANOS (Join)

- SELECT *

FROM tabla_diaria AS td —> Selecciona la tabla indicada y le da el alias de "td"
JOIN tabla_mensual AS tm —> Relaciona la tabla diaria con la tabla mensual y la renombre con el alias "tm"
ON tdpk = tmfk; —> Relaciona la llave principal “.pk” (primary key) con la llave foránea “.fk” (foranean key).
- Se debe tener cuidado al realizar productos cartesianos pues se puede llegar a una solución muy compleja.
- Left Join: Toma la tabla de la izquierda y conserva todos sus elementos junto con los elementos de la segunda tabla que pertenezcan a al primera tabla.

- Right Join:Toma la tabla de la derecha y conserva todos sus elementos junto con los elementos de la segunda tabla que pertenezcan a al primera tabla.



- Exclusive Left Join: Toma los elementos de la tabla de la izquierda pero que NO están en la tabla de la derecha.
  • Exclusive Right Join: Toma los elementos de la tabla de la izquierda pero que NO están en la tabla de la derecha.

  • Full Outer Join: Trae todos los elementos de la primera tabla y todos los elementos de la segunda tabla.

  • Excusive Full Outer Join: Trae los elementos que existen en la primera tabla y los elementos de la segunda tabla pero que NO son en común

  • Inner Join: Cuando no se específica el tipo de Join, por default se ejecuta este. Que trae solamente los elementos en común de las tablas

Prod. Cartesiano (JOIN)

  • Es la combinación de más de una tabla a través de una o más sentencias de relación
  • Normalmente se usa una Primary Key y una Foreign Key

A través de los JOIN podemos recorrer por todos los datos de la BASE DE DATOS. 😮

PRUEBA ESTOS COMANDOS CON LOS JOINS

SELECT * FROM platzi.alumnos AS ta
INNER JOIN platzi.carreras AS tc
ON ta.carrera_id = tc.id;

Ejemplo de Join:

SELECT nombre, apellido, carrera_id, carreras.carrera FROM platzi.alumnos JOIN platzi.carreras
ON alumnos.carrera_id = carreras.id;

Es necesario elegir bien un Join para no gastar recursos de más, podemos usar los diagramas de Ben para guiarnos:

Exclusive Left Join: Solo existe en A pero que no están en la B
Exclusive Right Join: Solo existe en B pero que no están en la A
Full Outer Join: El producto cartesiano, traes todos los elementos de las 2 tablas.
Exclusive Full Outer Join: Trae A y B pero evita traer los elementos en común
Inner Join: Lo que tienes en común en ambas tablas

Si hacemos:

ON td.fk = td.pk

Es más óptimo o el optimizador de consultas de los SGBD lo resuelve??
Dado que hacer un FK contra una PK, genera menos data que hacer un PK contra N FKs

<SELECT* 
FROM tabla_diaria AS td 
JOIN tabla_mensual AS tm 
ON td.pk=tm.fk

---se utiliza teoria de conjuntos---
left join -- traer todo lo del lado de la izquierda (conjunto a) y 
--la relacion que tiene con un conjunto b.

Right join -- traer todo lo del lado derecho (conjunto b) y la relacion 
--que tiene con el conjunto a.

exclusive left join -- trae todos los elementos del lado izquierdo (conjunto a) 
--que no existe en el conjunto b

exclusive Right join --trae todos los elementos del lado izquierdo (conjunto b)
--que no existe en el conjunto a> 

Anterior mente el profesor menciono que hay casos en que tendremos que unir do tablas de base de datos diferentes, pero con la diferencia que estas se encontraban en el mismo host, justamente tuve una semana frustrado por no poder realizar mi query de manera exitosa, pasaba que se me duplicaban, que si de echo eran muchos, se convirtió en una catástrofe.
Para ello la solución solo fue una pequeña instrucción

<DISTINCT> 

Para mi la solución fue usar esta instrucción de la siguiente manera

<SELECT DISTINCT bd.campo.......> 

Espero darme a entender

Hubiera deseado ver los ejemplos del uso de los JOIN en conjunto con la explicación teórica.

Un ejemplo de como yo uso las bases de datos. Manejo un sistema con bases de datos, y la plataforma genera reportes csv, hay una tabla que tiene como columna un titulo, resulta que al generar el reporte, no arroja el csv y esto por que en una fila de una columna o un registro, se guardo mal, y el error del sistema me aparecia que no podía obtener un título. Asi que, haciendo un análisis de donde podria encontrarse ese dato en una columna, ya localizado, pude borrar ese registro. Al final, obtuve el reporte de 5 años en un csv.

Sin duda que el Join ayuda mucho a saber por dónde vamos a atacar esa base de datos o que parte de los datos son las que nos interesan.

Existen comando para cuando tengo más de dos tablas?