Cita: La intencion del inner es hacer la lectura de la tabla para simples mortales..
Los simples mortales no entienden la información que sale de un "SELECT * ..." con uso de INNER JOIN. Incluso los programadores expertos tienen confusiones con ellos.
Un INNER JOIN devuelve un registro por cada coincidencia que haya entre dos tablas dadas unidas por esa cláusula. Pero la cantidad de registros dependerá de la cardinalidad de la relación entre esas tablas.
Si tienes en la primera tabla 100 registros, y cada uno de esos registros se relaciona con 34 regstros de la segunda, la consulta entre dos tablas devolverá 3.400 registros no repetidos...
Pero hay que entender un detalle despecto al concepto de "no repetido" en BBDD: Dos registros cualesquiera son repetidos si
y sólo si todos los campos entre ambos registros tienen exactamente el mismo valor. Si al menos
uno de los campos no es idéntico al otro, eso en base de datos
no es repetición de datos, aunque todos los demas campos sean iguales.
¿Se entiende?
Ahora bien supongamos que entre todas tus tablas hay una cardinalidad de 1:5, es decir, por cada uno de los registros de cada tabla, en la siguiente hay cinco registros relacionados (en SQL las tablas se leen de izquierda a derecha).
Suponiendo que sólo tuvieses cinco registros en la primera, tu query devolvería 5^6 registros, es decir 15.625 diferentes desde el punto de vista de las bases de datos. El problema de entendimiento es que todos los campos d ela primera tabla aparecerán 3.125 veces, los de la segunda 625, y así.
Pero eso
no es un error. Es el resultado normal y esperado de un INNER JOIN.
¿Queda claro?
Los INNER JOIN no son para humanos.