- •Создание запросов sql
- •Зарезервированные слова Jet sql
- •Функции и операторы Access, используемые вместо ключевых слов ansi sql
- •Зарезервированные слова Jet sql и функции, не входящие в ansi sql
- •Эквивалентные типы данных Jet sql и ansi sql
- •Подстановочные знаки при сравнении строк
- •Зарезервированные слова distinctrow и distinct
- •Использование разделителей и символов sql
- •Создание запросов на объединение записей
- •Создание запроса к серверу
- •Управляющие запросы
- •Создание подчиненных запросов
- •Глава 9 .
- •Панель элементов
- •Разновидности элементов управления по типу содержимого
- •Элемент управления Надпись
- •Элемент управления Поле
- •Элементы управления выбора: Выключатель, Переключатель, Флажок и Группа
- •Элемент управления Список
- •Элемент управления Поле со списком
- •Элемент управления Кнопка
- •Элементы управления Свободная рамка объекта и Присоединенная рамка объекта
- •Элемент управления Рисунок
- •Элемент управления Разрыв страницы
- •Элемент управления Набор вкладок
- •Элемент управления Подчиненная форма/отчет
- •Элементы управления Линиям Прямоугольник
- •Преобразование одного элемента управления в другой
- •Создание многотабличных форм
- •Использование Мастера форм для создания главной и подчиненной форм
- •Добавление подчиненной формы в главную форму
- •Синхронизация данных в элементах формы
- •Создание многостраничных форм
- •Добавление и удаление страниц в наборе вкладок
- •Изменение порядка следования страниц
- •Свойства элемента управления Набор вкладок
- •Всплывающие формы и диалоговые окна
- •Вычисления в формах
Подстановочные знаки при сравнении строк
В данном случае речь идет о трех подстановочных знаках, приведенных в табл. 8.7.
Таблица 8.7. Соответствие подстановочных знаков
|
|
|
|
|
|
Jet SQL |
ANSI SQL |
Примечание |
|
|
? |
(подчеркивание) |
Любой одиночный символ |
|
|
* |
% |
Произвольное количество символов |
|
|
# |
He имеет эквивалента |
Любая цифра от 0 до 9 |
|
|
[список_знаков] |
Не имеет эквивалента |
Любой одиночный знак, входящий в список знаков |
|
|
[! список_знаков] |
Не имеет эквивалента |
Любой одиночный знак, не входящий в список знаков |
|
|
|
|
|
|
Язык SQL Microsoft Jet поддерживает использование в операторе Like как подстановочных знаков ANSI SQL (_ и #), так и подстановочных знаков ядра Microsoft Jet (? и *). Однако подстановочные знаки ANSI SQL доступны только в режиме ANSI SQL-92, в противном случае они воспринимаются просто как строковые константы. И наоборот, в режиме ANSI SQL-92 подстановочные знаки Jet SQL трактуются как строковые константы. Таким образом, нельзя в одном запросе смешивать эти знаки.
Ниже перечислены важные правила установления совпадения оператором Like.
Восклицательный знак (!) в начале списка_знаков означает, что совпадение наступит, если в выражении будет найден любой знак, отсутствующий в списке. Восклицательный знак вне квадратных скобок соответствует самому себе.
Знак дефиса (-) можно использовать в начале (после восклицательного знака, если он есть) или в конце списка_знаков для установления соответствия с самим собой. В любом другом месте знак дефиса означает диапазон символов ANSI.
Если указан диапазон знаков, его границы должны следовать в возрастающем порядке (А— Я или 0—100). [А— Я] является правильным образцом, а [Я— А] — неправильным.
Квадратные скобки ([ ]) игнорируются; они рассматривается как пустая строка ("").
Зарезервированные слова distinctrow и distinct
Зарезервированные слова DISTINCTROW и DISTINCT в инструкции SELECT Jet SQL позволяют исключить из результирующего множества повторяющиеся строки. Разница между этими словами состоит в том, как при их использовании определяются повторяющиеся записи.
Если в инструкции SELECT используется слово DISTINCTROW, то для сравнения записей применяются все поля исходной таблицы, независимо от того, какие из этих полей включены в запрос.
Если в инструкцию SELECT входит слово DISTINCT, то для сравнения записей используются данные в строках результирующего множества запроса, т. е. только те поля, которые включены в запрос.
Замечание
Модификаторы могут использоваться не только в инструкции SELECT, но также и в запросах на добавление записей и на создание таблицы.
Для того чтобы понять, как влияет включение этих слов в запрос на его результат, построим запрос, который будет показывать, какие товары приобрел каждый клиент:
Создайте новый запрос в базе данных "Борей". Для этого раскройте список запросов окна базы данных и нажмите кнопку Создать (New Query). В списке диалогового окна Новый запрос (New Query) выделите значение Конструктор (Design View) и нажмите кнопку ОК.
Добавьте в запрос таблицы "Клиенты" (Customers), "Заказы" (Orders), "Заказано" (Orders Details) и "Товары" (Products). Access автоматически создает необходимые связи между таблицами.
Перетащите поле "Название" (CompanyName) из списка полей таблицы "Клиенты" в первый столбец бланка запроса. Выделите ячейку Сортировка (Sort) и выберите значение По возрастанию (Ascending).
Перетащите поле "Марка" (ProductName) из списка полей таблицы "Товары" (Products) во второй столбец бланка запроса. Задайте в этом столбце также сортировку по возрастанию.
Нажмите на панели инструментов кнопку Запуск (Run) для выполнения запроса.
Вы должны получить результирующее множество, которое содержит 2169 записей. При этом те клиенты, которые не сделали ни одного заказа, в результирующее множество .не попадут, однако клиенты, которые заказывали один и тот же товар несколько раз, могут попасть в таблицу несколько раз. Теперь добавим в инструкцию SQI, SELECT слово DISTINCTROW для зтого:
Выберите команду меню Вид, Режим SQL (View, SQL View) или щелкните по стрелке на кнопке Вид (View) на панели управления и выберите элемент Режим SQL (SQL View). Откроется диалоговое окно, в котором выведена инструкция SQL, соответствующая построенному запросу.
Введите слово DISTINCTROW сразу после слова SELECT. Запрос должен выглядеть гак, как показано на рис. 8.58.
Нажмите кнопку Запуск (Run). Результирующее множество запроса будет включать 1695 записей.
Снова выполните команду Вид, Режим SQL (View, SQL Mode) и замените в инструкции SQL СЛОВО DISTINCTRTOW СЛОВОМ DISTINCT.
Нажмите кнопку Запуск (Run). Результирующее множество запроса содержит те же 1695 строк, что и при использовании ключевого слова 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), запрос будет включать в результирующий набор все записи.
Замечание
Свойство Уникальные записи имеет смысл только для запроса, который строится по нескольким таблицам. Если запрос имеет только одну таблицу, значение этого свойства игнорируется.
