Позапросы с кванторами EXISTS, ANY и ALL

Подзапросы, которым предшествует ключевое слово EXIST осущесвляют проверку существования хотя бы одной строки, удовлетворяющей подзапросу. Особенности: 1. Перед ключевым словом Exist не должно быть называний столбцов, констант или других выражений. 2. Подзапрос с квантором существования возвращает значения true или false и не возвращает никаких данных из таблиц. 3. Список выбора такого подзапроса часто состоит из одной * (SELECT *...), так как нет необходимости указывать названия столбцов, если осуществляется проверка сущесвтования строк, удовлетворяющих условия указанным в подзапросе.
Задание 1. Найти название всех издательств, которые публиковали книги по бизнесу.
SELECT pub_name
FROM publishers
WHERE EXIST (SELECT * from titles where pub_id = publishers.pub_id and type = 'business')
view raw Ex1.sql hosted with ❤ by GitHub
В результирующей таблице появилось издательство New Age Book с индефикационным номером 1389. Имеется ли хотя бы одна строка в titles, в которой поле pub_id имеет значение 1389 и поле type='bisness', если да, то данное издательство должно попасть в результат. Задание 2. Найти авторов, которые живут в одном городе с издателем.
SELECT au_lname, au_fname
FROM authors
WHERE EXIST (SELECT * FROM publishers WHERE authors.city = publishers.city)
view raw Ex2.sql hosted with ❤ by GitHub
Ключевые слова ALL и ANY модифицируют операцию сравнения, которая формирует подзапрос. '=ALL' означает равно каждому возвращаемому значению. '>ALL' означает больше, чем любое значение, или что равносильно: больше максимальной величины. '=ANY' означает равно некоторому значению, что эквивалентно условию IN.'>ANY' означает больше по крайней мере одного значения, что равносильно больше минимальной величины.
Задание 3. Найти книги, которые стоят больше, чем самая дорогая книга в разделе 'mod_cook'.
SELECT title FROM TITLE
WHERE price > ALL (SELECT price FROM titles WHERE type='mod_cook
view raw Ex3.sql hosted with ❤ by GitHub
Задание 4. Найти авторов, которые живут в одном городе с издателем
SELECT au_lname, au_fname
FROM authors
WHERE city = ANY (SELECT city FROM publishers)
view raw Ex4.sql hosted with ❤ by GitHub

Комментарии

Популярные сообщения