MySQL - Select entendiendo el join
Para entener el Join primero analicemos las tablase, tenemos:
Una tabla principal, con los siguientes datos:
Luego una tabla derecha, con:
Y una izquierda con:
Selec para la tabla principal:
Relacionando todoas los valores de las tablas para mostrarlo en pantalla con INNER JOIN:
Realizando una relación de rango de selección con los valores de la dErecha contra principal, luego diferenciamos los valores de left join y right join:
Analizando exactamente lo que hace la consulta, para el inner join, MySQL resuelve devolver todos los "rangoSeleccion" que coincida con la tabla derecha.
En la tabla derecha tenemos 2 valores 1 y 2, en la tabla principal también tenemos 2 valores, llendo a la matemática diríamos, de la primer columna obtiene los 3 primeros valores para el primer número y los devuelve, de la segunda también y lo mismo para la tercera, es decir: (3 x 3) + (3 x 3) o sea 18 registros para el inner:
Cuando se agrega el LEFT JOIN estamos diciendo que principal se compare con el rango de la tabla de la izquierda, al controlar losr resultados vemos:
Y por qué 20, analicemos con este excel:
Es decir en cantidad de iteraciones que recorren los registros vemos, que sin importar si es left o right en esta consulta en particular, de acuerdo a los datos que contiene no varía el total de filas, que pasaría si variamos la instrucción de LEFT a RIGHT:
Vemos que de agrupar los datos esta vez lo realizaría a la derecha.
Luego vamos a cambiar de motor a MSSQL, no porque lo prefiera, sino por que su sintaxis es parecida y bueno, es lo que más estoy utilizando últimamente.
Espero que sirva, saludos!
Ch4rl1X