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

Datos repetidos en una consulta

Estas en el tema de Datos repetidos en una consulta en el foro de Oracle en Foros del Web. Hola muchachos, soy nuevo en la programacion PL/SQL y tengo una duda, ojalá que me puedan ayudar: Tengo tres tablas creadas de la siguiente manera: ...
  #1 (permalink)  
Antiguo 19/06/2008, 06:50
 
Fecha de Ingreso: junio-2008
Mensajes: 3
Antigüedad: 10 años, 5 meses
Puntos: 0
Datos repetidos en una consulta

Hola muchachos, soy nuevo en la programacion PL/SQL y tengo una duda, ojalá que me puedan ayudar:

Tengo tres tablas creadas de la siguiente manera:

CREATE TABLE estudiantes (
matricula NUMBER(5),
nombre VARCHAR2(35) NOT NULL,
fecha_nacimiento DATE,
sexo VARCHAR2(1) DEFAULT 'M' CONSTRAINT
ck_sexo_estudiantes check(sexo in('M','F')),
CONSTRAINT pk_estudiante PRIMARY KEY (matricula)
);

CREATE TABLE materias (
materia NUMBER(2),
nom_materia VARCHAR2(35),
creditos NUMBER(2),
CONSTRAINT pk_materias PRIMARY KEY (materia)
);

CREATE TABLE notas (
MATRICULA NUMBER(5),
MATERIA NUMBER(2),
CALIFICACION NUMBER(3) NOT NULL,
CONSTRAINT pk_notas PRIMARY KEY (matricula,materia),
CONSTRAINT fk1_notas FOREIGN KEY (matricula)
REFERENCES estudiantes(matricula),
CONSTRAINT fk2_notas FOREIGN KEY (materia)
REFERENCES materias(materia)
);

Datos de cada tabla:

MATRICULA NOMBRE FECHA_NAC S
---------- ----------------------------------- --------- -
1 Marcos Ruiz 31-DEC-99 M
2 Rosa Jaquez 12-FEB-91 F
3 Antonia Guzman 27-MAY-96 F

MATERIA NOM_MATERIA CREDITOS
---------- ----------------------------------- ----------
1 Lenguaje C 5
2 Lenguaje C++ 5
3 C#.NET 6
4 ASP.NET 5

MATRICULA MATERIA CALIFICACION
---------- ---------- ------------
1 1 78
2 4 85
3 3 100

El problema es el siguiente: cuando intento hacer una consulta simple combinando dos tablas, los resultados se me repiten a pesar de las restricciones, es decir, pasa esto:

SQL> select distinct e.nombre, n.calificacion from estudiantes e, notas n;

NOMBRE CALIFICACION
----------------------------------- ------------
Marcos Ruiz 78
Marcos Ruiz 85
Marcos Ruiz 100
Antonia Guzman 78
Antonia Guzman 85
Antonia Guzman 100
Rosa Jaquez 78
Rosa Jaquez 85
Rosa Jaquez 100

9 rows selected.

Lo que no entiendo es por que la informacion se repite a pesar de la clausula DISTINCT y las restricciones de relacion de estas tablas.

Gracias de antemano....

AlexGC
  #2 (permalink)  
Antiguo 19/06/2008, 11:17
 
Fecha de Ingreso: junio-2008
Ubicación: D.F.
Mensajes: 62
Antigüedad: 10 años, 5 meses
Puntos: 1
Respuesta: Datos repetidos en una consulta

Hola Que tal,

Tu Query esta repitiendo los nombres , pero si notas en tu resultado las lineas no son iguales ya que por cada vez que el nombre se repite existe una calificación diferente, y cada calificación que ves por registro pertenece a una Materia diferente. Por lo tanto para obtener los resultados que quieres tendrías que realizar lo siguiente:

SELECT e.nombre, n.materia, n.calificacion
FROM estudiantes e, notas n
WHERE e.matricula = n.matricula
/

Este query lo que te traería sería cada uno de los Alumnos con su Respectivas materias y su calificación de cada materia.

O también podrías traer la suma de todas las calificaciones de cada alumno.


SELECT e.nombre, SUM(n.calificacion)
FROM estudiantes e, notas n
WHERE e.matricula = n.matricula
GROUP BY e.nombre
/


ESPERO Y ESTO TE SIRVA

SALUDOS
  #3 (permalink)  
Antiguo 19/06/2008, 22:30
 
Fecha de Ingreso: junio-2008
Mensajes: 3
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Datos repetidos en una consulta

Oscar, Hermano mío, Diez millones de gracias, era lo que queria hacer....

Era algo sumamente basico, pero soy principiante...

de nuevo, Gracias!!!

AlexGC
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 06:36.