Muchos de ustedes han leído el artículo anterior sobre cómo la visualización incorrecta para explicar cómo funcionan las UNIONES puede ser confusa en algunos casos. Los círculos de Venn no pueden ilustrar completamente ciertos puntos, por ejemplo, si los valores de la tabla se repiten.
En preparación para grabar el sexto número del podcast Zinc Prod (donde acordamos discutir el artículo), parece que logré encontrar una versión interesante de la visualización. Además, también se ofreció una opción similar en los comentarios sobre el artículo original.
Todos están invitados bajo el corte
Entonces, visualización. Como descubrimos en los comentarios al artículo anterior, unirse es más un producto cartesiano que una intersección. Si observa cómo se ilustra el producto cartesiano, notará que a menudo es una tabla rectangular, donde la primera relación va a lo largo de un eje y la segunda a lo largo del otro. Por lo tanto, los elementos de la tabla serán todas las combinaciones de todo.
Es difícil dibujarlo de manera abstracta, por lo que tendrá que ser un ejemplo.
Digamos que tenemos dos tablas. En uno de ellos
id -- 1 1 6 5
En otro:
id -- 1 1 2 3 5
Descargo de responsabilidad inmediato: llamé al campo la palabra "id" solo para abreviar. Muchos en el último artículo estaban indignados, tal como están - repitió, desgracia. No te preocupes demasiado, bueno
Imagine, por ejemplo, que esta es una tabla con estadísticas diarias, donde para cada día y cada usuario hay datos sobre la visita a un sitio. En general, no es el punto.
Por lo tanto, queremos saber qué sucede con las distintas combinaciones de tablas. Comencemos con CROSS JOIN:
CROSS JOIN
SELECT t1.id, t2.id FROM t1 CROSS JOIN t2
CROSS JOIN es todas las combinaciones posibles que se pueden recibir de dos tablas.
Esto se puede visualizar de la siguiente manera: en el eje x - una tabla, en el eje y - otra, todas las celdas dentro (resaltadas en naranja) - este es el resultado

ÚNETE INTERIOR
INNER JOIN (o simplemente JOIN) es la misma CROSS JOIN que tiene solo aquellos elementos que satisfacen la condición escrita en la construcción "ON". Preste atención a la situación cuando los registros están duplicados: habrá cuatro resultados con unidades.
SELECT t1.id, t2.id FROM t1 INNER JOIN t2 ON t1.id = t2.id

IZQUIERDA UNIRSE
LEFT OUTER JOIN (o simplemente LEFT JOIN) es lo mismo que INNER JOIN, pero además agregamos nulo para las filas de la primera tabla, para lo cual no se encontró nada en la segunda
SELECT t1.id, t2.id FROM t1 LEFT JOIN t2 ON t1.id = t2.id

UNIRSE A LA DERECHA
RIGHT OUTER JOIN (o RIGHT JOIN) es lo mismo que LEFT JOIN, todo lo contrario. Es decir esto es INNER JOIN + nulo para las filas de la segunda tabla, para las cuales no se encontró nada en la primera
SELECT t1.id, t2.id FROM t1 RIGHT JOIN t2 ON t1.id = t2.id

→ Puedes jugar con solicitudes aquí
Conclusiones
Parece ser una simple visualización. Aunque hay limitaciones: muestra el caso cuando la igualdad se escribe en ON, y no es algo complicado (cualquier expresión booleana). Además, no se ha considerado el caso donde nulo está entre los valores de la tabla. Es decir Esto sigue siendo una simplificación, pero parece haber resultado mejor y más preciso que los círculos de Venn.
Suscríbase a nuestro podcast Zinc Prod , donde discutimos bases de datos, desarrollo de software y otras cosas interesantes.