Bases de Datos > MySQL

 problema con duplicacion de campos

(1/1)

crocop:
hola amigos les cuento toy realizando un libro de clases en  con 4 tablas .

--- Código: XML --- [u]tabla anotacion[/u]  [u]tabla alumnos [/u]    [u]tabla asignatura [/u]     [u]tabla notas_alumno[/u]cod_anotacion     [b]rut_alumno [/b]      [b]  cod_asignatura[/b]        [b] cod_notas[/b][b]rut_alumno [/b]        nom_alumno        nom_asignantura     [b]cod_asignatura[/b]anotacion                                              [b]     rut_alumno[/b]                                                           nota                                                           porcentaje  

Quiero mostrar : rut_alumno, nom_alumno,nom_asignatura,nota,porcentaje,anotacion

mi problema es que cuando hago la  consulta de listar con este query SE DUPLICAN LOS DATOS:

--- Código: XML ---Rut     Nombre  Nombre asignatura   Notas         porcentaje        Anotaciones12343234-4  andres  ingles                   44                        55%             bien 12343234-4  andres  ingles                  44                     55%             bien 12343234-4  andres  ingles                 23                      34%             bien 12343234-4  andres  ingles                23                       34%             bien 

SELECT a.rut_alumno, a.nom_alumno, b.cod_asignatura, b.nom_asignatura, c.cod_anotacion, c.rut_alumno, c.anotacion, d.cod_nota, d.cod_asignatura, d.rut_alumno, d.nota , d.porcentaje
FROM alumnos a, asignaturas b, anotaciones_alumno c, notas_alumno d
WHERE a.rut_alumno=d.rut_alumno and d.rut_alumno=c.rut_alumno and d.cod_asignatura=b.cod_asignatura


cual seria mi problema?  muchas gracias!

softevolutions:
Es normal que se te dupliquen los datos con esa estructura. Te pasará siempre que un alumno tenga mas de un registro en "tabla_notas_alumnos".

La consulta sería tal que así:

select a.rut_alumno, a.nom_alumno, asig.nom_asignatura, na.nota, na.porcentaje, anot.anotacion
from alumnos a
left join asignatura asig on asig.rut.alumno = a.rut_alumno
left join notas_alumno na on na.rut_alumno=a.rut_alumno and na.cod_asignatura=asig.cod_asignatura
left join anotaciones anot on anot.rut_alumno=a.rut_alumno


No lo he probado, pero creo que sería así.

Navegación

[0] Índice de Mensajes

Ir a la versión completa