Читайте также:
|
|
Лекция № 6
(2009 год)
Использование подзапросов
Вложенные запросы
Задание 1: требуется узнать фамилию самого молодого сотрудника.
SELECT Fam, Year_b FROM Pers WHERE Year_b= (SELECT max (Year_b) FROM Pers)
В этом операторе используется вложенный оператор
SELECT max(Year_b) FROM Pers,
который возвращает максимальный год рождения. Результат используется в элементе WHERE основного оператора SELECT для поиска сотрудника (или сотрудников), чей год рождения совпадает с максимальным.
2. С помощью вложенных запросов обращаемся к разным таблицам
Для этого создайте таблицу Persl, аналогичную по структуре таблице Pers, но относящуюся к другой организации. Заполните таблицу Persl данными, отличающимися от таблицы Pers.
Замечание. Впрочем, можно всего этого и не делать, заменив в приведенных ниже примерах таблицу Persl таблицей Pers, т.е. работая с одной и той же таблицей. Смысл операторов все равно будет понятен.
Задание 2: требуется в таблице Pers найти всех однофамильцев сотрудников другой организации.
Выполните запрос
SELECT * FROM Pers WHERE Fam IN (SELECT Fam FROM Persl)
Вложенный оператор (SELECT Fam FROM Persl) возвращает множество фамилий из таблицы Persl, а конструкция WHERE основного оператора SELECT отбирает из фамилий в таблице Pers те, которые имеются в множестве фамилий из Persl.
Осваиваем ключевые слова АLL и ANY в условии WHERE.
Слово ALL означает, что условие выполняется для всех записей, a ANY — хотя бы для одной записи.
Задание 3: в базе данных Pers требуется найти сотрудников, которые не старше всех сотрудников из Persl (любого выделенного сотрудника).
SELECT Fam, Year_b FROM Pers WHERE Year_b >= ALL (SELECT Year_b FROM Persl)
Задание 4: требуется получить список самых молодых сотрудников организации.
Для этого достаточно в предыдущем запросе заменить Persl на Pers
Задание 5: требуется получить список сотрудников в Pers, которые моложе хотя бы одного сотрудника в Persl.
SELECT Fam, Year_b FROM Pers WHERE Year_b > ANY (SELECT Year_b FROM Persl)
Осваиваем работу с псевдонимами
В операторах, работающих с несколькими таблицами, удобно каждой таблице задать псевдоним, сокращающий ссылки на таблицы, а иногда придающий им особый смысл, вытекающий из построенного оператора.
Псевдоним таблицы может записываться в списке таблиц после слова FROM, отделяясь от имени таблицы пробелом. Эти псевдонимы действуют только в данном операторе и не имеют никакого отношения к псевдонимам баз данных, которые мы постоянно используем.
Задание 6: первый из приведенных выше операторов перепишите следующим образом:
SELECT P.* FROM Pers P, Dep D WHERE (P.Dep=D.Dep) AND ( D.Proisv=true)
В этом примере таблице Pers дан псевдоним Р, а таблице Dep - D.
5. Осваиваем ключевое слово EXISTS ( используетсяпосле WHERE … )
В условиях, содержащих вложенные операторы SELECT, может использоваться ключевое слово EXISTS, которое означает отбор только тех записей, для которых вложенный запрос возвращает хотя бы одно значение).
Задание 7: требуется получить список сотрудников, которые имеют хотя бы одного сверстника в таблице Pers.
SELECT Mum, Fam, Year_b
FROM Pers p1
Дата добавления: 2015-08-09; просмотров: 96 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Требования к участникам | | | Осваиваем приемы самообъединения таблицы. |