SoloCodigo

Bases de Datos => MySQL => Mensaje iniciado por: crocop en Domingo 12 de Diciembre de 2010, 15:25

Título: problema con duplicacion de campos
Publicado por: crocop en Domingo 12 de Diciembre de 2010, 15:25
hola amigos les cuento toy realizando un libro de clases en  con 4 tablas .
Código: XML
  1.  
  2. [u]tabla anotacion[/u]  [u]tabla alumnos [/u]    [u]tabla asignatura [/u]     [u]tabla notas_alumno[/u]
  3. cod_anotacion     [b]rut_alumno [/b]      [b]  cod_asignatura[/b]        [b] cod_notas[/b]
  4. [b]rut_alumno [/b]        nom_alumno        nom_asignantura     [b]cod_asignatura[/b]
  5. anotacion                                              [b]     rut_alumno[/b]
  6.                                                            nota
  7.                                                            porcentaje
  8.  
  9.  


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
  1. Rut     Nombre  Nombre asignatura   Notas         porcentaje        Anotaciones
  2. 12343234-4  andres  ingles                   44                        55%             bien
  3.  
  4. 12343234-4  andres  ingles                  44                     55%             bien
  5.  
  6. 12343234-4  andres  ingles                 23                      34%             bien
  7.  
  8. 12343234-4  andres  ingles                23                       34%             bien
  9.  


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!
Título: Re: problema con duplicacion de campos
Publicado por: softevolutions en Miércoles 15 de Diciembre de 2010, 19:35
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í.