Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Вопрос-Ответ Новый топик    Ответить
 помогите с синтаксисом sql  [new]
sery80
Member

Откуда:
Сообщений: 24
1.
select stud.fio, count(stud.fio) as hrs from stud inner join lect on lect.subj = "мат-ка" and stud.id = lect.stud group by stud.fio having count(stud.fio)=5

и вот
2.
select stud.fio from stud inner join (select lect.stud, lect.teach, count(teach) from lect where lect.subj ="Мат-ка" group by stud, teach having count(teach) = 5) as lect on stud.id = lect.stud
inner join (select distinct lect.stud, lect.teach, count(teach) from lect where lect.subj ="Мат-ка" group by stud, teach having count(teach) =1) as lect1 on stud.id = lect1.stud
это так я попробывал решить
студенты
create table stud(
id integer not null primary key,
fio varchar2(50) not null unique);

преподаватели
create table teach(
id integer not null primary key,
fio varchar2(50) not null unique);

лекции
create table lect(
stud integer not null references stud(id),
teach integer not null references teach(id),
subj varchar2(20) not null, -- изучаемый предмет
lectdate timestamp not null, -- начало лекции
lectdur integer not null, -- длительность лекции в минутах
room varchar2(20) not null); -- аудитория
Если есть запись в этой таблице - значит студент был на лекции. Если хотя бы один студент был на лекции, лекция была. Все студенты из одной группы.
1.
Отобрать студентов, посетивших ровно 5 уроков математики
2.Отобрать студентов, посетивших ровно 5 уроков математики и при этом всегда посещавших лекции только одного (любого) преподавателя
19 ноя 14, 13:20    [16871293]     Ответить | Цитировать Сообщить модератору
 Re: помогите с синтаксисом sql  [new]
sery80
Member

Откуда:
Сообщений: 24
sery80,
может вот так?
select stud.fio from stud (select lect.stud, lect.teach, count(teach) from lect where lect.subj ="Мат-ка" group by stud, teach having count(teach) = 5) lect, (select distinct lect.stud, lect.teach, count(teach) from lect where lect.subj ="Мат-ка" group by stud, teach having count(teach) =1) lect1
inner join lect on stud.id = lect.stud
inner join lect1 on stud.id = lect1.stud
просто не знаю можно ли подзапрос вставлять в join инструкцию?
19 ноя 14, 14:57    [16872254]     Ответить | Цитировать Сообщить модератору
 Re: помогите с синтаксисом sql  [new]
sery80
Member

Откуда:
Сообщений: 24
sery80,
select stud.fio, count(stud.fio) as hrs
from stud
inner join lect on stud.id = lect.stud
where lect.subj = "мат-ка"
group by stud.fio
having count(stud.fio)=5
19 ноя 14, 15:11    [16872363]     Ответить | Цитировать Сообщить модератору
 Re: помогите с синтаксисом sql  [new]
sery80
Member

Откуда:
Сообщений: 24
[quot sery80]1.
select stud.fio, count(stud.fio) as hrs from stud inner join lect on lect.subj = "мат-ка" and stud.id = lect.stud group by stud.fio having count(stud.fio)=5

и вот

лекции
20 ноя 14, 14:34    [16878824]     Ответить | Цитировать Сообщить модератору
 Re: помогите с синтаксисом sql  [new]
sery80
Member

Откуда:
Сообщений: 24
[quot sery80]1.
select stud.fio, count(stud.fio) as hrs from stud inner join lect on lect.subj = "мат-ка" and stud.id = lect.stud group by stud.fio having count(stud.fio)=5

и вот
20 ноя 14, 14:35    [16878832]     Ответить | Цитировать Сообщить модератору
 Re: помогите с синтаксисом sql  [new]
Прогер_самоучка
Member

Откуда:
Сообщений: 68878
молодец. Садись, пять!
20 ноя 14, 14:40    [16878874]     Ответить | Цитировать Сообщить модератору
Все форумы / Вопрос-Ответ Ответить