Ver Mensaje Individual
  #2 (permalink)  
Antiguo 07/04/2015, 11:47
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Buscador con Inner Join replica informacion

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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)