Зарезервированные
слова
DISTINCTROW и DISTINCT
Зарезервированные
слова DISTINCTROW и DISTINCT в инструкции SELECT Jet SQL позволяют исключить
из результирующего множества повторяющиеся строки. Разница между этими словами
состоит в том, как при их использовании определяются повторяющиеся записи.
Если в инструкции
SELECT используется слово DISTINCTROW, то для сравнения записей применяются
все поля исходной таблицы, независимо от того, какие из этих полей включены
в запрос.
Если в инструкцию
SELECT входит слово DISTINCT, то для сравнения записей используются данные в
строках результирующего множества запроса, т. е. только те поля, которые включены
в запрос.
Замечание
Модификаторы могут использоваться не только в инструкции SELECT, но также и в запросах на добавление записей и на создание таблицы.
Для того чтобы
понять, как влияет включение этих слов в запрос на его результат, построим запрос,
который будет показывать, какие товары приобрел каждый клиент:
Вы должны
получить результирующее множество, которое содержит 2169 записей. При этом те
клиенты, которые не сделали ни одного заказа, в результирующее множество .не
попадут, однако клиенты, которые заказывали один и тот же товар несколько раз,
могут попасть в таблицу несколько раз. Теперь добавим в инструкцию SQI, SELECT
слово DISTINCTROW для зтого:
Рис. 8.58.
Инструкция SQL с модификатором DISTINCTROW
В данном случае
разницы между употреблением этих модификаторов нет (в других случаях может получиться
иной результат). Однако при попытке редактировать данные в таблице вы убедитесь,
что при использовании модификатора DISTINCT результирующий набор записей получается
необновляемым, а модификатор DISTINCTROW допускает изменение данных в результирующем
наборе.
Вместо того
чтобы вносить эти модификаторы вручную в режиме SQL, можно просто установить
соответствующие свойства запроса. Чтобы открыть диалоговое окно свойств запроса,
щелкните правой кнопкой мыши по свободному полю в верхней панели окна Конструктора
запроса и выберите из контекстного меню команду Свойства (Properties). Появляется
диалоговое окно, представленное на рис. 8.57.
Два свойства
в этом окне определяют использование модификаторов DISTINCTROW и DISTINCT:
Уникальные
значения
(Unique Values) и
Уникальные записи
(Unique Rows). Свойство
Уникальные значения
соответствует модификатору DISTINCT, a свойство
Уникальные
записи
— модификатору DISTINCTROW. Если вы попробуете установить эти значения,
то увидите, что Access не позволит установить значения Да (Yes) для обоих свойств.
Если одно из них имеет значение
Да
(Yes), то для второго автоматически
устанавливается значение
Нет
(No). Если оба свойства имеют значение
Нет
(No), запрос будет включать в результирующий набор все записи.
Замечание
Свойство Уникальные записи имеет смысл только для запроса, который строится по нескольким таблицам. Если запрос имеет только одну таблицу, значение этого свойства игнорируется.