Конспект лекций
Вид материала | Конспект |
7.4.Предикаты ALL, DISTINCT, DISTINCTROW, TOP |
- Конспект лекций 2008 г. Батычко В. Т. Административное право. Конспект лекций. 2008, 1389.57kb.
- Конспект лекций 2010 г. Батычко Вл. Т. Муниципальное право. Конспект лекций. 2010, 2365.6kb.
- Конспект лекций 2011 г. Батычко В. Т. Семейное право. Конспект лекций. 2011, 1718.16kb.
- Конспект лекций 2011 г. Батычко Вл. Т. Конституционное право зарубежных стран. Конспект, 2667.54kb.
- Конспект лекций 2010 г. Батычко В. Т. Уголовное право. Общая часть. Конспект лекций., 3144.81kb.
- Конспект лекций для студентов по специальностям 190302 «Вагоны», 783.17kb.
- Конспект лекций бурлачков в. К., д э. н., проф. Москва, 1213.67kb.
- Конспект лекций для студентов специальности 080504 Государственное и муниципальное, 962.37kb.
- Конспект лекций по курсу "Начертательная геометрия и инженерная графика" Кемерово 2002, 786.75kb.
- Краткий конспект лекций 2009 г. Батычко В. Т. Прокурорский надзор. Конспект лекций., 1859.8kb.
7.4.Предикаты ALL, DISTINCT, DISTINCTROW, TOP
Позволяют отобрать записи среди выбранных с помощью запроса на языке SQL.
Синтаксис
SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]]
FROM таблица
Ниже перечислены аргументы инструкции SELECT, содержащей эти предикаты:
Элемент | Описание |
ALL | Если инструкция SQL не содержит ни одного предиката, то подразумевается предикат ALL. Ядро базы данных Microsoft Jet отбирает все записи, соответствующие условиям, заданным в инструкции SQL. Приведенные ниже инструкции SQL эквивалентны; они возвращают все записи из таблицы "Сотрудники": SELECT ALL * FROM Сотрудники ORDER BY КодСотрудника;SELECT * FROM Сотрудники ORDER BY КодСотрудника; |
DISTINCT | Исключает записи, которые содержат повторяющиеся значения в выбранных полях. Чтобы запись была включена в результат выполнения запроса, значения в каждом поле, включенном в инструкцию SELECT, должны быть уникальными. Например, в таблице "Сотрудники" есть однофамильцы. Если две записи содержат значение "Иванов" в поле "Фамилия", то следующая инструкция SQL возвратит только одну из них: SELECT DISTINCT Фамилия FROM Сотрудники; Если опустить предикат DISTINCT, этот запрос возвратит обе записи для фамилии Иванов.Если предложение SELECT содержит более одного поля, то для включения записи в результат выполнения запроса необходимо, чтобы совокупность значений во всех этих полях была уникальной.Результат выполнения инструкции SQL, содержащей предикат DISTINCT, является необновляемым и не отражает последующие изменения, внесенные другими пользователями. |
DISTINCTROW | Опускает данные, основанные на целиком повторяющихся записях, а не отдельных повторяющихся полях. Например, создан запрос, объединяющий таблицы "Клиенты" и "Заказы" по полю "Клиент". В поле "Клиент" таблицы "Клиенты" нет повторяющихся значений, однако, они есть в одноименном поле таблицы "Заказы", поскольку каждый клиент может разместить несколько заказов. Следующая инструкция SQL показывает, как можно использовать предикат DISTINCTROW для получения списка клиентов, разместивших хотя бы один заказ, без включения сведений о самих заказах: SELECT DISTINCTROW Название FROM Клиенты INNER JOIN Заказы ON Клиенты.КодКлиента= Заказы.КодКлиента ORDER BY Название;Если опустить предикат DISTINCTROW, в результат выполнения запроса будет включено несколько строк о каждом клиенте, сделавшем несколько заказов. Предикат DISTINCTROW влияет на результат только в том случае, если в запрос включены не все поля из анализируемых таблиц. Предикат DISTINCTROW игнорируется, если запрос содержит только одну таблицу или все поля всех таблиц. |
TOP n [PERCENT] | Возвращает определенное число записей, находящихся в начале или в конце диапазона, описанного с помощью предложения ORDER BY. Следующая инструкция SQL позволяет получить список 25 лучших студентов выпуска 1996 года: SELECT TOP 25 Имя, Фамилия FROM Студенты WHERE ГодВыпуска = 1996 ORDER BY СреднийБалл DESC;Если предложение ORDER BY будет опущено, запрос возвратит произвольный набор 25 записей из таблицы "Студенты", удовлетворяющих предложению WHERE.Предикат TOP не осуществляет выбор между равными значениями. Если в предыдущем примере средние балы двадцать пятого и двадцать шестого студента будут равны, то запрос возвратит 26 записей.Кроме того, можно использовать зарезервированное слово PERCENT для возврата определенного процента записей, находящихся в начале или в конце диапазона, описанного с помощью предложения ORDER BY. Предположим, что вместо 25 лучших студентов следует отобрать студентов, попавших в последние 10 процентов: SELECT TOP 10 PERCENT Имя, Фамилия FROM Студенты WHERE ГодВыпуска = 1994 ORDER BY СреднийБалл ASC; Предикат ASC обеспечивает возврат последних значений. Значение, следующее после предиката TOP должно быть числовым значением типа Integer без знака.Предикат TOP не влияет на возможность обновления запроса. |
таблица | Имя таблицы, из которой отбираются записи. |