Консультация № 138587
29.05.2008, 22:13
0.00 руб.
0 1 1
Здраствуйте уважаемые эксперты! Помогите написать три запроса на языке БД SQL.

Первая ситуация:
В базе данных есть две таблицы:
1. "Курсовые_проекты" с полями "N_Дисциплины", "N_Семестра", "N_КП".
2. "Экзамены" с полями "N_Дисциплины", "N_Семестра", "N_Экзамена".

Как должен выглядеть такой запрос? "По каким дисциплинам с семестре "7" есть экзамен и нет курсового?".

Вторая ситуация:
Есть таблица "Курсовые_проекты" с полями "N_Дисциплины", "N_Семестра", "N_КП". Нужно написать такой запрос "В каком семестре максимальное число курсовых?".

Третья ситуация:
Есть таблица "Контрольные работы" с полями "N_Дисциплины", "N_Семестра", "N_КР". Запрос: "Сколько контрольных работ в семестре 8 и по каким дисциплинам?".

Заранее большое спасибо!

Обсуждение

Неизвестный
30.05.2008, 04:44
общий
это ответ
Здравствуйте, Тарасенко Александр Виталиевич!
Вот создал три запроса на Oracle. Некоторые замечания:
1. предполагаю, что уникальный индекс по таблицам "N_Дисциплины"+"N_Семестра"
2. второй запрос я не оптимизировал, но работает

Приложение:
запрос 1:SELECT Э.N_Дисциплины FROM Экзамены Э WHERE Э.N_Семестра = 7 AND NOT EXISTS (SELECT 1 FROM Курсовые_проекты К WHERE К.N_Дисциплины = Э.N_Дисциплины AND К.N_Семестра = Э.N_Семестра)запрос 2:SELECT * FROM (SELECT N_Семестра, COUNT(N_Семестра) Число_курсовых FROM Курсовые_проекты GROUP BY N_Семестра ORDER BY Число_курсовых DESC) WHERE ROWNUM = 1 запрос 3:SELECT N_Дисциплины, COUNT(*) N_Число_контрольных_работ FROM Курсовые_проекты WHERE N_Семестра = 8GROUP BY N_Дисциплины
Форма ответа