я создал таблицы, как это:SQL запросов объединений не работает, как ожидалось
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 экзамена против одного курса? Это было бы возможно в этой схеме и могло бы вызывать поведение, которое вы описываете. –
Это запрос: выберите utilisateur.nom, cour.c_nom, examen.ex_nom из utilisateur покинул присоединиться этюд на utilisateur.id_util = etude.fk_util оставил присоединиться Кур на etude.fk_cour = cour.id_cour налево присоединиться к прохожему на utilisateur.id_util = passer.fk_util left join examen на passer.fk_ex = examen.id_ex; –