Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Новое на сайте
Новое

Многотабличные объединения с коррелирующими запросами

Многотабличные объединения с коррелирующими запросамиОчень важно всегда помнить, что в пределах одного запроса старый синтаксис не может быть скомбинирован с новым. В противном случае запрос работать не будет, к тому же в нем будет сложно разобраться. В то же время, если нужно создать коррелирующий запрос, синтаксис SQL:2003 не будет работать. Общая рекомендация следующая: либо использовать в коррелирующих запросах старый синтаксис, либо изменить тип самого запроса. В следующей инструкции коррелирующий запрос использован для получения всех имен клиентов и номеров телефонов тех, кто разместил заказы. Обратите внимание, что объединения содержатся как во внешнем запросе, так и во внедренном представлении. Объединения представления выполняются первыми, а результирующий набор данных затем используется в объединениях главного запроса. Логика проектирования подобных запросов должна соответствовать описанной ниже. В первую очередь нужно найти всех клиентов, разместивших больше пяти заказов. Относительно простой однотабличный запрос способен вернуть нужные результаты. Теперь имеются номера клиентов, но нужно получить список ассоциированных с ними торговых представителей. Такой информации в таблице ORDER_HEADER нет, однако, добавив в запрос объединение с таблицей CUSTOMER, ее можно получить. Информация уже более полная, однако это пока не то, что нам нужно. Номер торгового представителя мало что о нем говорит аналитику — это бессмысленное целое число. Ему нужно имя торгового представителя, поэтому, обозначив имеющееся внедренное представление символом c, мы объединяем его с таблицей SALESMAN. Однако и это пока не то, что мы ищем. На самом деле нас интересуют номера телефонов найденных торговых представителей, а не количество заказов и идентификатор клиента. Недостающую информацию можно получить в таблице PHONE, объединив ее со сформированным запросом и ограничив результирующий набор данных номерами телефонов. Так мы приходим к окончательной форме запроса.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *