Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
stelgi Member Откуда: Сообщений: 4 |
Добрый день. Есть таблица Студенты(№_студента, ФИО), Дисциплины(№_дисциплины, Название), Оценки(№_студента, №_дисциплины, Оценка). Необходимо создать запрос "Получить фамилии студентов, сдавших все дисциплины". Как это можно реализовать, не могу понять, с помощью чего? |
6 ноя 18, 12:36 [21725106] Ответить | Цитировать Сообщить модератору |
Kopelly Member Откуда: Красноярск Сообщений: 289 |
Как вариант:Select ... From [студенты] cross apply [дисциплины] left join [оценки] on ... Group by №_студента Having count(*) = count([Оценки].Оценка) |
6 ноя 18, 12:48 [21725126] Ответить | Цитировать Сообщить модератору |
stelgi Member Откуда: Сообщений: 4 |
Kopelly, Не сообразил, как применить ваш код( Но сделал вот так Select Студенты.[ФИО] From Студенты, Оценки WHERE Оценки.[№_студента]=Студенты.[№_студента] Group by Студенты.[ФИО] HAVING count(Оценки.[Оценка])=3 |
6 ноя 18, 13:14 [21725153] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47049 |
SELECT * FROM Студенты С WHERE NOT EXISTS ( SELECT * FROM Оценки О WHERE О.№_студента=С.№_студента AND NOT EXISTS ( SELECT * FROM Дисциплины Д WHERE Д.№_студента=С.№_студента AND Д.№_дисциплины=О.№_дисциплины ) ); |
6 ноя 18, 13:35 [21725180] Ответить | Цитировать Сообщить модератору |
Shakill Member Откуда: мск Сообщений: 1882 |
SELECT * FROM Студенты С WHERE NOT EXISTS ( SELECT Д.№_дисциплины FROM Дисциплины Д EXCEPT SELECT О.№_дисциплины FROM Оценки О WHERE О.№_студента=С.№_студента ); |
6 ноя 18, 14:24 [21725264] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |