Пример 56
Задача.
Сформировать запрос для вывода имен и номеров зачеток студентов, у которых не внесены оценки по тем или иным предметам.
Решение.
SELECT DISTINCT S.NRecordBook [№ зачётки],
SName ФИО,
NameSubject Дисциплина
FROM Student S INNER JOIN Progress P
ON S.NRecordBook= P.NRecordBook
INNER JOIN Subject Sb
ON Sb.IDSubject= P.IDSubject
WHERE Mark IS NULL;
Результат реализации запроса:
Большая группа запросов включает в себя условия с отрицанием. Существует множество способов задания отрицания (см.Таблица 16). Мы уже встречались с таким запросом (см.). Однако сейчас обратим внимание на использование предиката IS [NOT] NULL.
Пример 57
Задача.
Сформировать запрос для вывода имен студентов, не сдавших хотя бы один вид отчетности.
Решение.
SELECT DISTINCT SName [Имя студента]
FROM Student S Left JOIN Progress P
ON S. NRecordBook= P. NRecordBook
WHERE Mark IS NULL;
Результат реализации запроса:
Большая группа запросов включает в себя условия с отрицанием. Существует множество способов задания отрицания (см.Таблица 16). Мы уже встречались с таким запросом (см.). Однако сейчас обратим внимание на использование предиката IS NOT NULL. Наиболее часто встречающиеся ошибки связаны с попыткой написать условие отбора, например, следующим образом: Mark =NULL, Mark <>NULL или Mark!=NULL. Сразу отметим, что существует единственно корректная форма записи: Mark IS NULL (Mark IS NOT NULL)
|
|
Пример 58
Задача.
Сформировать запрос для вывода имен студентов, сдавших хотя бы один вид отчетности.
Решение.
SELECT DISTINCT SName [Имя студента]
FROM Student S Left JOIN Progress P
ON S. NRecordBook= P. NRecordBook
WHERE Mark IS NOT NULL;
Результат реализации запроса:
Использование других предикатов наиболее актуально при работе с подзапросами и будет рассмотрено в другом разделе (см.).