![](/user_photo/2706_HbeT2.jpg)
- •Создание запросов в субд Access 2002
- •Текст печатается в авторской редакции Создание запросов в среде Access
- •1. Цель работы
- •2. Окно конструктора запросов
- •3. Построение условий для выбора записей
- •4. Упорядочение данных и группировка полей запроса
- •5. Общие сведения о команде select
- •6. Интерактивные и перекрестные запросы
- •7. Запросы на изменение
- •7.1. Виды запросов на изменение. Их использование
- •7.2. Запрос на создание таблицы
- •7.3. Запрос на обновление
- •7.4. Запрос на добавление записей
- •7.5. Запрос на удаление записей
- •8. Порядок выполнения работы
- •9. Контрольные вопросы и задания
5. Общие сведения о команде select
При использовании Конструктора запросов Access автоматически конвертирует созданный макет запроса в команды языка структурированных запросов SQL. При выполнении запроса Access непосредственно использует команду SELECT языка SQL.
Команда SELECT – первое слово в запросах на выборку и на создание таблицы, определяющее поля, которые должны быть в результирующей таблице. После ключевого слова SELECT задаются поля, которые должны отображаться в результирующей таблице. Если полей несколько, их имнеа разделяются запятыми. Синтаксис команды таков: SELECT Поле_1, Поле_2, Поле_3, … Упрощенный синтакис команды SELECT имеет вид:
SELECT [DISTINCT] списокВыбираемыхПолей
FROM списокТаблиц
[WHERE условиеВыборки]
[GROUP BY УсловиеГруппировки]
[ORDER BY условие Упорядочения]
[INTO имя Таблицы]
[TO FILE имяФайла [ADDITIVE] | [TO PRINT]]
Опция DISTINCT используется для исключения повторяющихся строк запроса.
Команда FROM определяет имена таблиц, содержащих поля, которые определены в команде SELECT. Это обязательная команда для инструкции SELECT. Она указывает, где искать записи.
При работе с одной таблицей, команда FROM просто определяет имя таблицы; в случае же работы с несколькими таблицами можно определять тип соединения между ними в команде FROM с помощью одного из трех выражений:
INNER JOIN ... ON;
RIGHT JOIN ... ON;
LEFT JOIN ... ON.
INNER JOIN ... ON определяет традиционное внутреннее объединение между таблицами.
Например:
FROM пример2!doc1 INNER JOIN пример2!vis1;
INNER JOIN пример2!pac1 ;
ON Pac1.nump = Vis1.nump ;
ON Doc1.numd = Vis1.numd;
RIGHT JOIN ... ON и LEFT JOIN ... ON работают точно также, но определяют внешнее объединение вместо внутреннего.
Команда WHERE определяет условия отбора записей и , в отличие от команд SELECT и FROM, является необязательной. Условием может быть любое корректное выражение независимо от сложности.
Например: WHERE Pac1.grrisk = "нет";
Команда GROUP BY определяет порядок группировки данных.
Например: GROUP BY Doc1.spec Команда ORDER BY определяет порядок сортировки выводимых записей. При этом сортировка производится по полю, определенному после предложения, в порядке возрастания или убывания.
Например: ORDER BY Doc1.spec Визуализация конструкции запроса на языке SQL может вы-полняться командой Вид Режим SQL основного меню, либо выбором строки Режим SQL из контекстного меню панели таблиц запроса.
В качестве иллюстрации ниже приведны примеры команды SELECT для представленных выше (см. Запрос 3, Запрос 4, Запрос 6) выборок данных.
SELECT Клиент.Fam, Товар.Name, Count(Покупка.Data) AS [Count-Data], Sum([Покупка]![Kol]*[Товар]![Price]) AS [Sum]
FROM (Клиент INNER JOIN Покупка ON Клиент.Num = Покупка.Num) INNER JOIN Товар ON Покупка.Numt = Товар.Numt
GROUP BY Клиент.Fam, Товар.Name;
SELECT Товар.Name, Sum([Покупка]![Kol]*[Товар]![Price]) AS [Sum]
FROM Покупка INNER JOIN Товар ON Покупка.Numt = Товар.Numt
GROUP BY Товар.Name
HAVING (((Товар.Name)<>("сахар")))
ORDER BY Товар.Name;
SELECT Товар.Name
FROM Покупка INNER JOIN Товар ON Покупка.Numt = Товар.Numt
WHERE (((Покупка.Data)>#2/1/2002#))
GROUP BY Товар.Name
ORDER BY Товар.Name;
При программировании законченных приложений команда SELECT широко используется для формирования разнообразных ведомостей. В связи с этим при создании запросов целесообразно сохранять SQL-операторы в качестве заготовок для будущих программ.