Ver Mensaje Individual
  #4 (permalink)  
Antiguo 07/07/2015, 13:44
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: Problema con Select y mysql_fetch_array

Cita:
Iniciado por lisamolinad Ver Mensaje
Al realizar el select de la manera anterior, o con el INNER JOIN, me devulve lo mismo, valores duplicados de los dos registros que debería mostrar, los duplica y además los mezcla, no sé si sea algo con el SELECT o el mysql_fetch_array. Ya lo había intentado de una manera similar con el INNER JOIN y nada de nada.
No. Ni mezcla ni revuelve. Lo que no estás entendiendo e la lógicxa de un JOIN en una relación N:M o 1:N.
Por empezar: las dos sentencias que te puse son semánticamente idénticas, solo se diferencian en la performance. No en el resultado.

Por otro lado, debes tener claro que una consulta que relaciona dos o más tablas que tienen una relación 1:N, devolverá N veces cada registro de la primera tabla por cada uno de los registros que se relacionan en la segunda.
Es decir que si la primera tabla (semestres) se relacionase con 20 registros de la segunda (secciones), ese primer JOIN devolverá veinte (20) veces los datos de cada semestre por cada una de las secciones donde existe una relación.
Pero como además estás relacionado una tercera tabla (materia) con la segunda, esto se repite, y si cada registro de la segunda se relacionase con cinco (5) de la tercera, el resultado sería una tabla de cien (100) registros, cien veces lo de la primera y cinco veces cada variable de la segunda, mas cinco grupos de registros diferentes de la tercera.
¿Se va entendiendo?

Bueno, e problema central es que para que te devuelva solo los datos de un único numero de cedula de identidad, y sólo te entregase un único registro, debería suceder que exista un único registro en cada tabla donde ese numero exista.

¿Eso sucede?

Probablemente no. Si no nos muestras los datos que obtienes es imposible comprobarlo, pero es seguro que el tema es un problema de datos.
La base de datos, te insisto, no inventa ni crea cosas. Si los datos no son los que esperas es porque las condiciones del WHERE no son suficientemente restrictivas, o bien porque las relaciones o el diseño de las tablas está mal hecho, e incluso peude ser que haya datos sucios.
Pero no es el SQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 07/07/2015 a las 13:52