Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/06/2008, 05:50
AlexGC
 
Fecha de Ingreso: junio-2008
Mensajes: 3
Antigüedad: 15 años, 10 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