WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |

Синтаксис FROM {имя–таблицы [[AS] псевдоним ] | имя–запроса–на–выборку [[AS] псевдоним ] | <таблица–объединения>} … [IN <спецификация источника>] где <таблица–объединения>:

{имя–таблицы [[AS] псевдоним ] | имя–запроса–на–выборку [[AS] псевдоним ] | (<таблица–объединения>)} {INNER | LEFT | RIGHT} JOIN {имя–таблицы [[AS] псевдоним ] | имя–запроса–на–выборку [[AS] псевдоним ] | (<таблица–объединения>)} ON <условие объединения> Для каждой таблицы и запроса можно определить альтернативное имя. Оно используется как псевдоним вместо полного имени таблицы при задании имен столбцов в списке полей, условии объединения и предложении WHERE.

Пример Следующий запрос отображает все поля таблицы Товары:

SELECT Товары.* FROM Товары;Следующий запрос отображает товары, цена которых больше $100 и гарантийный срок которых 36 месяцев:

SELECT Товары.Наименование, Товары.Цена FROM Товары WHERE Товары.Цена > 100 AND Товары.[Гарантийный срок] = 36;

Большие возможности SQL, во многом, основаны на его способности объединять информацию из нескольких таблиц или запросов.

Для задания типа объединения таблиц в логический набор записей, из которого будет выбираться необходимая информация, в предложении FROM используется операция JOIN.

Операция INNER JOIN используется для получения всех строк из обеих логических таблиц, удовлетворяющих условию объединения.

Операция LEFT JOIN возвращает все строки из первой логической таблицы, объединенные с теми строками из второй, для которых выполняется условие объединения.

Аналогично, операция RIGHT JOIN возвращает все строки из второй логической таблицы, объединенные с теми строками из первой таблицы, для которых выполняется условие объединения.

<условие объединения> – выражение, в котором поля первой таблицы сравниваются с полями второй таблицы. В бланке запроса QBE в условии объединения используется только оператор равно (=). Запрос на основе объединения таблиц по неравенству (<, >, <>, <= или >=) можно создать только в режиме SQL.

Пример Следующий запрос отображает сведения о складах фирмы Citilink.

SELECT Склады.НомерСклада, Склады.Адрес, Склады.Телефон FROM Фирмы INNER JOIN Склады ON Фирмы.КодФирмы = Склады.КодФирмы WHERE Фирмы.Название = «Citilink»;

Пример Запрос отображает список товаров, которые еще не продавались, с указанием наименования товаров и номеров складов, на которых они хранятся.

SELECT Товары.Наименование, Хранение.НомерСклада FROM (Товары INNER JOIN Хранение ON Товары.КодТовара = Хранение.КодТовара) LEFT JOIN Продажи ON Хранение.ID = Продажи.ID WHERE (( Продажи.Количество) Is Null);

Следующая операция возвратит все строки из таблиц Товары и Хранение, для которых совпадают значения в поле КодТовара.

Запрос должен заканчиваться символом «точка с запятой» (;) Товары INNER JOIN Хранение ON Товары.КодТовара = Хранение.КодТовара Операция LEFT JOIN возвратит все строки из таблицы, полученной в результате предыдущей операции INNER JOIN, объединенные с теми строками из [Продажи], для которых выполняется условие объединения. Тогда в строке товара, который не продавался, в поле «количество проданного товара» будет значение Null, что будет являться условием отбора для искомого списка.

Предложение GROUP BY В инструкции SELECT задает столбцы, используемые для формирования групп из выбранных строк.

Синтаксис GROUP BY имя–столбца, … Оператор GROUP BY разделяет рассматриваемую таблицу на такие группы, что внутри любой из этих групп все строки содержат одинаковые значения в указанном столбце.

Пример Следующий запрос отображает общее количество проданного товара каждого наименования:

SELECT Товары.Наименование, Sum(Продажи.Количество) AS [Sum–Количество] FROM (Товары INNER JOIN Хранение ON Товары.КодТовара = Хранение.КодТовара) INNER JOIN Продажи ON Хранение.ID=Продажи.ID GROUP BY Товары.Наименование Предложение HAVING HAVING – специальная форма фразы WHERE. Она относится не к отдельным строкам, а к группам: предикат во фразе HAVING всегда ссылается (посредством специальных библиотечных функций, таких как, например, SET) на свойства групп, а не строк, и на основе этого предиката группы целиком либо выбираются, либо отбрасываются.

Синтаксис HAVING <условие отбора> В случае отсутствия предложения GROUP BY условие отбора применяется ко всей логической таблице, определенной инструкцией SELECT.

Пример Следующий запрос отображает общее количество проданного товара по дням с 10 по 20 декабря 2003г.

SELECT Продажи.Дата, Sum(Продажи.Количество)AS [Sum–Количество] FROM Продажи GROUP BY Продажи.Дата HAVING ((Продажи.Дата) Between #10.12.03# AND #20.12.03#);

Предложение ORDER BY Задает порядок расположения строк, возвращаемых инструкцией SELECT Синтаксис ORDER BY {имя–столбца | номер–столбца [ASC | DESC]}, … Оператор ORDER BY определяет сортировку результата выборки в порядке возрастания ASC или убывания DESC значений атрибута. В предложении ORDER BY можно указать несколько столбцов. Список сортируется сначала по значениям столбца, имя которого указано первым.

Пример Следующий запрос отображает список товаров упорядоченных по цене SELECT Товары.Наименование, Товары.Цена FROM Товары ORDER BY Товары.Цена DESC;

Инструкция SELECT Выполняет операции выбора и объединения для создания логической таблицы (набора записей) на базе других таблиц или запросов.

Синтаксис SELECT [ALL | DISTINCT | DISTINCTROW | TOP число [PERCENT]] <список–полей> Предикаты ALL, DISTINCT, DISTINCTROW, TOP n или TOP n PERCENT уточняют окончательный набор записей запроса.

По умолчанию действует предикат ALL, при котором в набор записей включаются все строки, удовлетворяющие условиям отбора, в том числе дубликаты.

Предикат DISTINCT требует, чтобы запрос возвратил только строки, отличающиеся от всех остальных.

Если инструкция SELECT содержит предикат DISTINCTROW, то в набор записей включаются только те строки, в которых конкатенация первичных ключей из всех таблиц, участвующих в формировании возвращаемых столбцов, является уникальной. В зависимости от того, какие столбцы представлены в наборе записей, иногда можно увидеть повторяющиеся строки, но даже в этом случае каждая строка запроса образована из уникальной (DISTINCT) комбинации строк (ROWS) базовых таблиц.

Чтобы результирующий набор содержал только первые n или первые n процентов записей, используйте предикат TOP n или TOP n PERCENT. Параметр n должен быть целым числом, не превышающим 100, если используется ключевое слово PERCENT.

Пример Следующий запрос отображает список 10 самых дорогих товаров SELECT TOP 10 Товары.Наименование, Товары.Цена FROM Товары ORDER BY Товары.Цена DESC;

Подчиненный запрос (вложенная выборка) SQL позволяет использовать в условии отбора результаты другой выборки. Уровней вложенности может быть несколько.

Пример Необходимо получить список процессоров, цена которых ниже средней цены процессоров.

SELECT Товары.Наименование, Товары.Цена FROM Товары WHERE ((Товары.Наименование) Like "проц*") AND ((Товары.Цена)<(SELECT Avg(Товары.Цена) AS СредняяЦена FROM Товары WHERE ((Товары.Наименование) Like "проц*")));

В приведенном выше примере внутренний подчиненный запрос вычисляет среднюю цену процессоров, внешний запрос отбирает процессоры, цена которых ниже средней цены процессоров.

Упражнение Откройте БД Продажи.

Указание: запросы сохраняйте под именами: Запрос_номерУпражнения (подчеркивание) НомерПунктаУпражнения, по которому строится запрос (например, Запрос2_1).

1) Создайте запрос для отображения десяти самых дорогих товаров. Укажите наименование товара, цену и гарантийный срок.

2) Создайте запрос для отображения трех самых дорогих мониторов.

3) Создайте запрос для отображения мониторов, цена которых выше средней цены мониторов.

4) Создайте запрос для отображения полного списка товаров, указав наименование товара, номер склада, количество проданного товара. (Список должен содержать все товары таблицы Товары, независимо от того, продавался товар или нет. Тогда в строке товара, который не продавался, в столбце «количество проданного товара» будет значение Null).

SELECT Товары.Наименование, Хранение.НомерСклада, Sum(Продажи.Количество) AS [SumКоличество] FROM (Товары INNER JOIN Хранение ON Товары.КодТовара = Хранение.КодТовара) LEFT JOIN Продажи ON Хранение.ID = Продажи.ID GROUP BY Товары.Наименование, Хранение.НомерСклада;

5) Создайте запрос для отображения оставшегося на складе количества товара, поставки на которые прекращены.

SELECT Товары.Наименование, Хранение.Поставки, Хранение.НомерСклада, Хранение.количество, IIf([Запрос5_4]![Sum-Количество] Is Null, [Хранение]![количество], [Хранение]![количество][Запрос5_4]![Sum-Количество]) AS [Осталось на складе] FROM Запрос5_4 INNER JOIN (Товары INNER JOIN Хранение ON Товары.КодТовара = Хранение.КодТовара) ON (Запрос5_4.НомерСклада = Хранение.НомерСклада) AND (Запрос5_4.Наименование = Товары.Наименование) WHERE (((Хранение.Поставки)=Yes));

6) Создайте параметрический запрос для отображения номеров и телефонов складов, на которых хранится самый дешевый товар указанного наименования. В качестве параметра используйте три первых символа наименования товара.

7) Создайте запрос для отображения товаров, которые еще не продавались. Укажите наименование товара и номер склада, на котором он хранится.

9. Создание форм и отчетов Создание формы Формы Access позволяют создавать пользовательский интерфейс для таблиц базы данных.

Хотя для выполнения тех же самых функций можно использовать режим таблицы, формы предоставляют преимущества для представления данных в упорядоченном и привлекательном виде.

Форма представляет собой некий электронный бланк, в котором имеются поля для ввода данных. В форме каждое поле можно разместить в точно заданном месте, выбрать для него цвет и заливку. В форму можно помещать вычисляемые поля. OLE-обьекты можно увидеть только в форме или отчете. В форме намного проще работать с большими текстами поля типа МЕМО в текстовом окне с полосами прокрутки.

Форма строится на основе Access-таблицы или запроса. При каждом открытии сохраненной формы обновляются данные запроса, на основе которого создается форма. Благодаря этому содержимое Формы всегда соответствует информации в таблицах и запросах.

Формы могут быть выведены на экран в трех видах: режим конструктора, режим формы и режим таблицы. Для перехода из одного режима в другой используются команды меню ВИД или кнопка ВИД панели инструментов.

Microsoft Access предоставляет быстрый способ создания формы на основе таблицы с использованием Мастера Форм. Он задает пользователю вопросы о структуре и оформлении формы. Результатом диалога пользователя и Мастера Форм является «готовая к употреблению» форма.

Для создания формы самостоятельно без помощи Мастера Форм:

1. В окне БАЗА ДАННЫХ щелкните на вкладке ФОРМА.

2. В открывшемся окне щелкните на кнопке СОЗДАТЬ. Появится окно НОВАЯ ФОРМА.

3. Если форма создается на основе таблицы, то выберите имя таблицы, являющейся источником данных формы.

4. Щелкните на кнопке КОНСТРУКТОР. При открытии окно конструктора ФОРМА содержит одну область – область данных. Помимо этого, форма может содержать область заголовка, примечания и колонтитулов (верхнего и нижнего). Для добавления этих областей используются команды Заголовок/примечание формы и Колонтитулы (меню Вид). (Данные, размещаемые в заголовке, в области данных и в области примечания, отображаются в форме. Области колонтитулов отображаются только при печати.) 5. Для индикации инструментального окна выберите команду Панель элементов (меню Вид).

Выберите команду Список полей (меню Вид) для выбора полей, которые будут включены в форму. Разместите поля в области данных. Поля, добавляемые таким способом, состоят из надписи и поля для ввода данных. Если выделить надпись или само поле, то ко второму элементу автоматически добавляется манипулятор перемещения и можно перемещать их в паре или по отдельности. В случае, когда нет необходимости в выводе надписи поля рядом с самим полем, удалить ее можно следующим образом: выделить надпись и нажать клавишу DELETE.

Формы для связанных таблиц В таких формах можно одновременно отобразить информацию из двух (или более) связанных таблиц. Кроме того, такая форма позволяет выполнить редактирование данных, содержащихся в обеих таблицах.

В результате создания этой формы на экране выводятся только те записи подчиненной таблицы, которые связаны с текущей записью исходной (главной) таблицы:

1. Выберите пиктограмму НОВЫЙ ОБЪЕКТ: АВТОФОРМА.

2. В появившемся окне НОВАЯ ФОРМА выберите режим МАСТЕР ФОРМ.

3. В появившемся диалоговом окне укажите имена полей для главной и подчиненной форм и порядок их размещения в новой форме, выбрав имя таблицы из раскрывающегося списка Таблицы/Запросы. Нажмите кнопку ДАЛЕЕ.

4. В следующем окне выберите переключатель Подчиненные формы.

5. Далее выберите вид подчиненной формы.

6. Далее выберите стиль формы.

7. Озаглавьте главную и подчиненную формы и нажмите кнопку ГОТОВО.

Для просмотра записей главной формы используются кнопки просмотра в нижней части окна.

Выше нее выводится строка для просмотра записей подчиненной формы, которые представлены в виде таблицы.

Создание элементов формы или отчета Окно формы (отчета) может содержать следующие элементы: подпись, поле, поле со списком, список, выключатели, переключатели, флажки и кнопки. Кроме того, форму (отчет) можно дополнить иллюстрацией (рисунком или диаграммой), текстом и линиями различного типа. Для оформления форм (отчетов) также может быть использована возможность изменения начертания, стиля и выравнивания данных, которые отображаются в полях, а также цвета символов, фона и границы (панель инструментов ФОРМАТ (Форма/Отчет)).

Создание элементов окна осуществляется в режиме Конструктора.

Для индикации инструментального окна выберите команду Панель элементов (меню Вид).

Каждая пиктограмма этой панели предназначена для создания элемента определенного типа.

Назначение каждой пиктограммы однозначно определяется их наименованиями.

Существует три основных типа элементов управления: присоединенные, свободные, вычисляемые.

Присоединенные элементы управления - элементы, связанные с полем таблицы. При вводе значения в присоединенный элемент управления поле таблицы в текущей записи автоматически обновляется. Большинство элементов управления, в том числе обьекты OLE, можно присоединить к полю. Чаще всего присоединенные элементы управления содержат данные текстового типа, а также даты, числа, логические данные (Да/Нет), рисунки и поля МЕМО.

Свободные элементы управления сохраняют введенную величину, не обновляя при этом поля таблицы. Их можно использовать для отображения: текста; значений, которые должны быть переданы макросам; линий и прямоугольников. Кроме того, их можно использовать для хранения обьектов OLE (например рисунков), которые расположены не в таблице, а в самой форме.

Свободные элементы управления называют также переменными или переменными памяти.

Вычисляемые элементы управления создают на основе выражений, например, функций или формул. Поскольку они не присоединены к полям таблицы, они не обновляют содержание полей таблицы. Этот элемент управления позволяет производить необходимые вычисления, используя данные полей таблицы, с последующим отображением в форме.

Выбор объектов – позволяет изменить указатель курсора на инструмент выбора объекта.

Мастера элементов – позволяет включать и отключать мастера по созданию элементов управления.

Надпись – предназначена для вывода на экран неизменяющегося текста, например, заголовков, подписей или пояснений. Надпись относится к свободным элементам управления, в которые нельзя вводить данные.

Поле – позволяет создать область для отображения, ввода или изменения данных. В поле можно использовать данные любого типа: текст, числа, дата/время, логические величины и МЕМО.

Поля могут быть как присоединенными, так и свободными. В них можно использовать поля из таблиц или запросов, а также вычисляемые выражения, поэтому такие элементы управления называют связанными полями. При создании связанного поля вместе с ним одновременно образуется еще один элемент управления - присоединенная надпись.

Группа параметров – позволяет создать область настраиваемого размера для размещения набора флажков, переключателей или выключателей, представляющих набор альтернативных значений.

Pages:     | 1 |   ...   | 3 | 4 || 6 | 7 |






© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.