Ключевые слова: связанные (соотнесенные / коррелированные) подзапросы.
Теоретический материал:
Вывести название дисциплин, по которым получена оценка 5.
SELECT NAZVANIE FROM DISCHIPLINA WHERE 5 IN (SELECT OCENKA FROM USPEV WHERE KOD_DISCHIPLINA= DISCHIPLINA.KOD_DISCHIPLINA)
Такой подзапрос отличается от простого подзапроса тем, что вложенный подзапрос не может быть обработан прежде, чем будет обрабатываться внешний подзапрос. Это связано с тем, что вложенный подзапрос зависит от значения DISCHIPLINA.KOD_DISCHIPLINA, а оно изменяется по мере того, как система проверяет различные строки таблицы DISCHIPLINA. Следовательно, с концептуальной точки зрения обработка осуществляется следующим образом:
Система проверяет первую строку таблицы DISCHIPLINA. Предположим, что это строка дисциплины с номером 1. Тогда значение DISCHIPLINA.KOD_DISCHIPLINA будет в данный момент имеет значение, равное 1, и система обрабатывает внутренний запрос:
(SELECT OCENKA FROM USPEV WHERE KOD_DISCHIPLINA= 1)
получая в результате множество (1, 4, 3, 5, 2, 4, 3, 3, 5). Теперь система может завершить обработку для дисциплины с номером 1. Выборка значения NAZVANIE для KOD_DISCHIPLINA= 1 (База данных) будет проведена тогда и только тогда, когда OCENKA=5 будет принадлежать этому множеству, что, очевидно, справедливо.
Далее система будет повторять обработку такого рода для следующей дисциплины и т.д. до тех пор, пока не будут рассмотрены все строки таблицы DISCHIPLINA.
Подобные подзапросы называются связанными / соотнесенными / коррелированными, так как их результат зависит от значений, определенных во внешнем подзапросе. Обработка связанного подзапроса, следовательно, должна повторяться для каждого значения извлекаемого из внешнего подзапроса, а не выполняться раз и навсегда.
Порядок выполнения работы:
Вывести фамилии преподавателей, которые поставили хотя бы одну двойку.
Вывести название предметов, средняя оценка по которым выше 3.
Вывести фамилии студентов, у которых имеются оценки 3 и 4 (одновременно).
Вывести фамилии студентов, которые получили хотя бы одну оценку, выше средней.
Вывести названия групп, в которых обучается 6 студентов.
Достарыңызбен бөлісу: |