Запросы для SQL БД

программирование MySQL базы данных sql

Помогите пожалуйста найти ошибку в запросе для БД.
Нужно составить запрос выбирающий Факультеты, студенты которых подготовили ТОЛЬКО НИРС.
У меня волучилось вот что:
select Факультет
From R1, R2, R3
where R1.ФИО = R2.ФИО_Автора
and R2.Вид_Работ = 'УИРС'
and R1.№_Группы = R3.№_Группы
group by ФИО_Автора
having count (distinct Вид_Работ)=1
;

Не могу понять почему не работает. Запрос выдаёт факультеты студенты которых подготавливали НИРС(даже если за ними числятся другие виды работ). На сколько я понимаю select count (distinct Вид_Работ) должен подсчитывать количество видов работ для каждого студента (учитывая что я группировал их по ФИО), но она не работает...

pragma foreign_keys=1;

drop table if exists R3;
drop table if exists R2;
drop table if exists R1;
drop table if exists R4;

create table R1 (
ФИО text primary key,
№_Группы varchar(4) not null
);

insert into R1 values ('Иванов Иван Иванович', 4949);
insert into R1 values ('Петров Николай Николаевич', 3951);
insert into R1 values ('Сидоров Антон Васильевич', 3939);
insert into R1 values ('Абрамов Антон Александрович', 4949);
insert into R1 values ('Петров Антон Васильевич', 5343);


create table R2 (
Название_работы text,
ФИО_Автора text,
Вид_Работ text,
foreign key (ФИО_Автора) references R1(ФИО)
);

insert into R2 values ('Геометрия Фракталов', 'Иванов Иван Иванович', 'УИРС');
insert into R2 values ('Жизнь Ёжиков', 'Сидоров Антон Васильевич', 'Статья');
insert into R2 values ('Экономика Гондураса', 'Петров Николай Николаевич', 'Доклад');
insert into R2 values ('Операционные системы', 'Петров Николай Николаевич', 'Доклад');
insert into R2 values ('Операционная система UNIX', 'Сидоров Антон Васильевич', 'Доклад');
insert into R2 values ('Геометрия Фракталов', 'Сидоров Антон Васильевич', 'Статья');
insert into R2 values ('Жизнь чаек', 'Иванов Иван Иванович', 'Статья');
insert into R2 values ('Ряды Фурье', 'Петров Антон Васильевич', 'УИРС');
insert into R2 values ('Ряды тейлора', 'Петров Антон Васильевич', 'УИРС');


create table R3 (
№_Группы varchar (4) not null,
Факультет integer not null
);

insert into R3 values (4949, 4);
insert into R3 values (3939, 3);
insert into R3 values (3951, 3);
insert into R3 values (5343, 5);


create table R4 (
Вид_работ text not null,
Количество_баллов integer not null
);

insert into R4 values ('УИРС', 5);
insert into R4 values ('Доклад', 4);
insert into R4 values ('Статья', 4);
insert into R4 values ('Доклад', 3);

Ответы:
>студенты которых подготовили ТОЛЬКО НИРС.
Все студенты которых подготовили ТОЛЬКО НИРС.
или
Некоторые студенты которых подготовили ТОЛЬКО НИРС.
select R3.Факультет
from
   R2 join
   R1 on R1.ФИО = R2.ФИО_Автора join
   R3 on R3.№_Группы = R1.№_Группы
group by R3.Факультет
having min(R2.Вид_Работ = 'УИРС')


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.