【发布时间】:2012-05-12 20:46:28
【问题描述】:
我创建了这样的表:
create table utilisateur(
id_util number(10) primary key,
nom varchar2(10) not null,
prenom varchar2(10) not null,
date_naissance date not null,
adress varchar2(20)
);
create table cour(
id_cour number(10) primary key,
c_nom varchar2(20) not null,
auteur varchar2(20) not null
);
create table etude(
fk_util number(10) references utilisateur(id_util),
fk_cour number(10) references cour(id_cour),
primary key(fk_util,fk_cour)
);
create table examen(
id_ex number(10) primary key,
ex_nom varchar2(20) not null,
temp date,
fk_cour number(10) references cour(id_cour)
);
create table passer(
fk_util number(10) references utilisateur(id_util),
fk_ex number(10) references examen(id_ex),
primary key(fk_util,fk_ex),
note number(4)
);
create table certificat(
cert_nom varchar2(20),
prix varchar2(10),
code varchar2(10) primary key,
fk_ex number(10),
fk_util number(10)
);
create table signet(
id_sign number(10) primary key,
s_nom varchar2(20) not null,
depand_par varchar2(20) not null,
fk_util number(10) references utilisateur(id_util)
);
问题是我想查看所有用户(utilisateur),他们正在阅读哪门课程(cour),他们通过了哪门考试(examen)以及他们获得了哪些证书(certificat)已收到。
我尝试使用内部连接、左右连接、完全连接、视图来执行此操作,但没有成功。如果我注册了 3 门课程和 2 门考试,那么我会看到一些重复。我在想可能是我的数据库出了点问题。
【问题讨论】:
-
您能发布您正在使用的查询吗? 2个考试是针对一门课程的吗?这在此架构中是可能的,并且可能导致您描述的行为。
-
这是查询: select utilisateur.nom, cour.c_nom,examen.ex_nom from utilisateur left join etude on utilisateur.id_util=etude.fk_util left join cour on etude.fk_cour=cour.id_cour left在 utilisateur.id_util=passer.fk_util 上加入 passer,在 passer.fk_ex=examen.id_ex 上左加入考试;