- •Лабораторная работа № 9 Использование в операторе select подзапросов, возвращаемых единичное значение. Цель работы
- •Ход работы
- •Методические указания Использование подзапросов.
- •Дополнительные возможности использования подзапросов, возвращающих единичное значение. Использование предложения exists.
- •Использование предложения singular.
- •Отчет должен содержать:
Дополнительные возможности использования подзапросов, возвращающих единичное значение. Использование предложения exists.
Бывают случаи, когда в условии поиска нужно указать, что из таблицы требуется отобрать только те записи, для которых подзапрос возвращает одно или более значений. В этом случае в условии поиска указывается предложение
EXISTS (<подзапрос>)
Ключевые слова EXISTS и NOT EXISTS предназначены для использования только совместно с подзапросами. Результат их обработки равен TRUE или FALSE. Для ключевого слова EXISTS результат равен TRUE только тогда, когда в возвращаемой подзапросом результирующей таблице присутствует хотя бы одна строка. Если результирующая таблица подзапроса пуста, результатом обработки будет FALSE. Для NOT EXISTS правила обратные.
ПРИМЕР
Выбрать коды и названия книги студенческого фонда библиотеки, которые когда-либо выдавались на руки читателям.
SELECT Code, Name
FROM Books
WHERE Code IN (SELECT BookCode
FROM BookInventaryNumbers
WHERE FundCode = 1 AND
EXISTS (SELECT Code
FROM BookGiveOutRecord
WHERE InventaryCode = BookInventaryNumbers.Code))
Результат выполнения запроса приведен в таблице 10.3.
Таблица 10.3.
Code |
Name |
6 |
Автоматизированные системы управления технологическим процессом обогащения руды |
Использование предложения singular.
Если в условии поиска нужно указать, что из таблицы требуется выбрать лишь те записи, для которых подзапрос возвращает только одно значение, указывается предложение
SINGULAR (<onepaтop_seIect >)
ПРИМЕР
Выбрать коды и названия книги студенческого фонда библиотеки, которые выдавались на руки читателям только один раз.
SELECT Code, Name
FROM Books
WHERE Code IN (SELECT BookCode
FROM BookInventaryNumbers
WHERE FundCode = 1 AND
SINGULAR (SELECT Code
FROM BookGiveOutRecord
WHERE InventaryCode = BookInventaryNumbers.Code))
Результат выполнения запроса приведен в таблице 10.4.
Таблица 10.4.
Code |
Name |
6 |
Автоматизированные системы управления технологическим процессом обогащения руды |
Результаты совпадают с примером для слова EXISTS только потому, что заданному условию в таблице BookGiveOutRecord Соответствует только одна запись.
Отчет должен содержать:
Номер, наименование и цель лабораторной работы.
Результаты проверки правильности работы операторов SELECT, описанных в примерах методических указаний.
Запросы и результаты их выполнения согласно пункту 4 хода работы.
Для тех, кто ведет проект базы данных согласно индивидуальному заданию, в отчет должны войти формулировки выборки данных, операторы SELECT и результаты работы операторов SELECT согласно пункту 5 хода работы.
Те, кто выполняет предыдущий пункт, должны включить в отчет полное содержимое тех таблиц, из которых выбирается информация согласно индивидуальному задания.
