Рисунок 114. Запрос c EXISTS к таблице CITY
В прошлом шаге вы говорили, что можно с помощью EXISTS заменить конструкцию IN. Приведите пример.
Например, у нас есть таблицы TABLE1, TABLE 2, поля связи KEY1, KEY2. Необходимо вывести на экран те данные из таблицы TABLE1, для которых присутствуют соответствующие строки в TABLE2 по KEY1, KEY2.
У вас в примерах есть синтаксис вида SELECT 1 FROM MAN m WHERE c.CITYCODE = m.CITYCODE. Почему именно единица? Поясните, как это работает.
Если в подзапросе есть хоть одна строка, то будет выведена единица, если нет, то подзапрос ничего не вернет, сама цифра 1 здесь не принципиальна.
Контрольные вопросы и задания для самостоятельного выполнения
1. Вывести все автомобили из таблицы AUTO, для которых нет соответствующих записей в таблице MAN. Использовать EXISTS (связь по PHONENUM).
2. Вывести все автомобили из таблицы AUTO, где есть записи в таблице MAN, где возраст людей больше 35 лет, используя EXISTS (связь по PHONENUM).
Шаг 37. Подзапрос как новая колонка запроса
Помните перечисление колонок таблицы после команды SELECT? В языке SQL есть возможность задать новую колонку как результат выполнения подзапроса. Разберемся, как это сделать.
Возможности использования подзапросов.
Язык SQL позволяет использовать подзапрос для вывода значений в качестве дополнительных колонок запроса.
Синтаксис
SELECT колонка 1, колонка 2, колонка 3, (SELECT колонка FROM другая таблица WHERE таблица1.колонка связи = другая таблица. колонка связи) псевдоним колонки FROM
Помните, по каким колонкам объединяются таблицы в нашей схеме?
AUTO — > MAN = PHONENUM
CITY — > MAN = CITYCODE
Примеры
Выбрать из CITY наименование города (CITYNAME) и наименование города (CITYNAME), где код города больше кода данного города на 1.
Рисунок 115. Запрос c подзапросом в колонке запроса
Выбрать имя, фамилию и город проживания (FIRSTNAME, LASTNAME, CITYNAME) человека.
Рисунок 116. Запрос c подзапросом в колонке запроса к таблице MAN
Выбрать марки AUTO (MARK), а также сколько человек обладает такой машиной (MARK) из таблицы MAN.
Рисунок 117. Запрос c подзапросом в колонке запроса к таблице MAN, AUTO
Такая конструкция порой бывает незаменима при практическом применении, однако у применения этого подзапроса также есть ряд ограничений:
• Подзапрос в качестве колонки запроса не должен возвращать более одной строки, в противном случае возникнет ошибка.
• Такой подзапрос может вернуть только значение одной колонки, синтаксис допускает только такой вариант использования; впрочем, всегда можно написать несколько похожих подзапросов.
Есть ли какие-либо ограничения по типам данных при создании подзапроса в качестве колонки запроса?
Скорее всего, нет. Я считаю, что этот синтаксис будет работать даже в случае запросов, которые возвращают CLOB- или BLOB-значения.
Контрольные вопросы и задания для самостоятельного выполнения
1. Выбрать марку авто, цвет, имя человека, который владеет машиной, использовать подзапрос для новой колонки таблицы.
2. Выбрать марку авто, цвет, имя человека, который владеет машиной, и в каком городе живет этот человек, использовать подзапрос для новой колонки таблицы.
3. Выбрать из MAN имя, фамилию и город проживания человека, сколько человек проживает в данном городе. Использовать подзапрос для новой колонки таблицы.
Шаг 38. Подзапрос как источник данных после FROM
Давайте познакомимся с еще одним замечательным способом использования подзапросов — использованием подзапроса как источника данных после ключевого слова FROM. Данный способ очень часто применяется на практике.
Язык SQL предоставляет возможность использовать подзапрос вместо таблицы после FROM.
Синтаксис этого магического способа
Примеры
Выбрать все красные (COLOR) автомобили * AUTO, используя подзапрос как таблицу.
Рисунок 118. Запрос c подзапросом как источник данных: таблица AUTO
Выбрать все автомобили * и владельцев *, используя подзапрос как таблицу.
Рисунок 119. Запрос c подзапросом как источник данных: таблица MAN
Выбрать все города (CITYNAME) и население городов (PEOPLES), используя подзапрос как таблицу.
Рисунок 120. Запрос c подзапросом как источник данных: таблица CITY
Читать дальше
Конец ознакомительного отрывка
Купить книгу