Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
ВЛОЖЕННЫЕ ЗАПРОСЫ
Пусть требуется выбрать все поставки, в которых поставляется кольцо. SELECT SP. Код пост., SP. Код дет., SP. Кол-во FROM SP, P WHERE SP. Код дет. = P. код дет. AND P. наим. = ‘кольцо’ ______________________ SELECT * FROM SP WHERE код дет. = (SELECT код дет. FROM P WHERE наим. = ‘кольцо’)
Сначала вычисляется внутренний SELECT, а затем обрабатывается внешний запрос. В результате первого шага у нас получится одно значение: Р3. Сравним по эффективности эти два запроса. Вложенный запрос является более эффективным, чем первый, в конструкции соединения. Можно использовать операцию In (если вместо кольцо – винт). SELECT * FROM SP WHERE код дет. IN (SELECT код дет. FROM P WHERE наим. = ‘винт’) Но так как мы используем множественную операцию IN, то внешний запрос обрабатывается неправильно.
Пример: Нужно найти имена всех поставщиков, имеющих суммарный объем поставок более 400. SELECT имя FROM S внешний запрос WHERE код пост. IN (SELECT код пост. FROM SP outer WHERE 400 < внутренний запрос (SELECT SUM (кол.) FROM SP inner WHERE outer. Код пост.= inner. Код пост.)) ______________________________________ Иванов Петров Сидоров Смирнов
Дата добавления: 2014-08-04; просмотров: 351; Нарушение авторских прав Мы поможем в написании ваших работ! |