Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Problemas en Consulta MySQL 4 Tablas

Estas en el tema de Problemas en Consulta MySQL 4 Tablas en el foro de Bases de Datos General en Foros del Web. Hola Amigos, espero que puedan ayudarme, estoy haciendo una consulta en MySQL, Tengo 4 Tablas - Estudiante - Matriculas - Cursos - Grados Estan mejor ...
  #1 (permalink)  
Antiguo 23/05/2011, 22:23
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 14 años, 5 meses
Puntos: 0
Pregunta Problemas en Consulta MySQL 4 Tablas

Hola Amigos, espero que puedan ayudarme, estoy haciendo una consulta en MySQL, Tengo 4 Tablas

- Estudiante
- Matriculas
- Cursos
- Grados

Estan mejor descritas en la siguiente imagen:



El problema que tengo es que me aparecen datos repetidos con diferentes id, la consulta es la siguiente:

Código MySQL:
Ver original
  1.           `m`.`ID_MATRICULA` AS `ID_MATRICULA`,
  2.           `m`.`NUM_MATRICULA` AS `NUM_MATRICULA`,
  3.           `e`.`ID_ESTUDIANTE` AS `ID_ESTUDIANTE`,
  4.           `e`.`NRO_DOCUMENTO` AS `NRO_DOCUMENTO`,
  5.           concat(`e`.`APELLIDO1`,' ',`e`.`APELLIDO2`,' ',`e`.`NOMBRE1`,' ',`e`.`NOMBRE2`) AS `NOMBRE_COMPLETO`,
  6.           `e`.`APELLIDO1` AS `APELLIDO1`,
  7.           `e`.`APELLIDO2` AS `APELLIDO2`,
  8.           `e`.`NOMBRE1` AS `NOMBRE1`,
  9.           `e`.`NOMBRE2` AS `NOMBRE2`,
  10.           `m`.`FECHA_MATRICULA` AS `FECHA_MATRICULA`,  
  11.           `m`.`ANIO_LECTIVO` AS `ANIO_LECTIVO`,      
  12.           `c`.`ID_CURSO` AS `ID_CURSO`,
  13.           `c`.`GRUPO` AS `GRUPO`,
  14.           `c`.`ID_SEDE_FK` AS `ID_SEDE`,
  15.           `g`.`ID_GRADO` AS `ID_GRADO`,
  16.           `g`.`DESCR_GRADO` AS `DESCR_GRADO`,
  17.           `g`.`NUM_GRADO` AS `NUM_GRADO`
  18.          
  19. FROM        estudiante e
  20.                                 INNER JOIN matriculas m ON e.ID_ESTUDIANTE = m.ID_ESTUDIANTE_FK
  21.                                 LEFT JOIN cursos c ON c.ID_CURSO = m.ID_CURSOS_FK
  22.                                 LEFT JOIN grados g ON g.ID_GRADO = c.ID_GRADO_FK

Espero que me van a ayudar...:contento:
  #2 (permalink)  
Antiguo 24/05/2011, 05:34
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problemas en Consulta MySQL 4 Tablas

En tu modelo, cada estudiante se debe matricular en forma independiente en cada materia (relación N:N entre estudiante y materia), el mismo estudiante puede estar matriculado N veces en la misma materia (salvo que la relación id_cursos+codigoest sea declarada UNIQUE).
Esto hace que la información del estudiante aparezca en la consulta una vez por cada materia en la que se matriculó.
¿Se va entendiendo?
A su vez, como cada grado está relacionado con un grado, si el mismo estudiante se matriculó más de una vez en la misma materia, la información de grados también aparecerá repetida.
En realidad, no hay errores de consulta. La consulta devolverá los datos que realmente le estás pidiendo. Las "repeticiones" de datos estan dados por los datos que corresponden a las diferentes instancias de la tabla de matrículas.

¿Cuál es el error que consideras que se da?
¿Cómo sería la información que quieres obtener?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/05/2011, 07:42
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problemas en Consulta MySQL 4 Tablas

Hola gnzsoloyo muchas gracias por todo, lo que se quiere con esa consulta es que se muestre todos los estudiantes matriculados con el curso respectivo en el que estan matriculados, con el INNER JOIN aseguro que se muestre los estudiantes que esten matriculados...., no se si me entendiste, muchas gracias nuevamente...
  #4 (permalink)  
Antiguo 24/05/2011, 08:02
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problemas en Consulta MySQL 4 Tablas

Eso lo sabía. Mi duda es que no nos dices cuál es la repetición a la que te refieres.
Mi inferencia es que la "repetición" está dada por el mismo diseño de las relaciones, y no en los datos en sí.
Por eso mi pregunta es cómo deben aparecer esos datos, es decir; ¿podrías dar un ejemplo de lo que aparece y de lo que quieres que aparezca?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 24/05/2011, 08:10
 
Fecha de Ingreso: junio-2010
Mensajes: 5
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Problemas en Consulta MySQL 4 Tablas

Gracias gnzsoloyo, a tu opinión, la consulta está bien realizada?
  #6 (permalink)  
Antiguo 24/05/2011, 08:16
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problemas en Consulta MySQL 4 Tablas

Si la relación entre las cuatro tablas es mandatoria (deben forzosamente poner siempre los valores de FK), deberías usar INNER JOIN en todos los casos y no LEFT JOIN.
LEFT JOIN en tu caso hará que salgan siempre los estudiantes con sus matrículas, aunque no haya coincidencias en las otras dos tablas, lo que puede dar lugar a listados incorrectos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: joins, mysql, select, sql, bases-de-datos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:43.