Поскольку создание объединений может составлять самую сложную часть запросов, особенно когда задействовано более двух таблиц, неплохо было бы при создании таких запросов иметь некоторое подспорье. К счастью, в Visual Basic предусмотрен конструктор представлений (View Designer), благодаря которому создание запроса с объединением нескольких таблиц значительно упрощается. При использовании конструктора представлений нет необходимости запоминать сложный синтаксис объединения в SQL. Вместо этого можно создать объединение графическим путем, выполнив приведенные ниже действия.
1. В окне Server Explorer создайте новое представление для базы данных Novelty.
2. После этого появится диалоговое окно Add Table (Создать таблицу), в котором следует указать таблицы tblCustomer и tblOrder, а затем щелкнуть на кнопке Close. Схема представления в окне конструктора представлений показана на рис. 2.5.
РИС. 2.5. Создание объединения двух таблиц в окне конструктора представлений
Обратите внимание на то, что конструктор представлений автоматически создает объединение между двумя таблицами на основе известного ключевого поля ID в таблице tblCustomer и явно заданного ранее отношения с полем CustomerID в таблице tblOrder.
После выполнения запроса на основе объединения двух таблиц в окне конструктора представлений будут отображены извлеченные данные, как показано на рис. 2.6.
Использование внешних объединений
Например, для извлечения списка клиентов и заказов, в который включены также клиенты, не имеющие неоплаченных заказов, можно использовать приведенный ниже запрос.
SELECT FirstName, LastName, OrderDate
FROM tblCustomer LEFT OUTER JOIN
tblOrder ON tblCustomer.ID = tblOrder.CustomerID
Обратите внимание, что в предложении LEFT JOIN используется синтаксис
РИС. 2.6. Выполнение запроса на основе объединения двух таблиц в окне конструктора представлений
Этот запрос возвращает приведенный ниже набор записей.
FirstName | LastName | OrderDate |
---|---|---|
John | Smith | 1/4/2001 |
John | Smith | 1/9/2001 |
Jill | Azalia | 1/14/2001 |
Brad | Jones | |
Daisy | Klein | 2/18/2001 |
Daisy | Klein | 3/21/2001 |
Daisy | Klein | 4/4/2001 |
Dave | Martin | 6/5/2001 |
Betty | Klein | |
Thurston | Ryan | 7/2/2001 |
Jane | Winters | 8/16/2001 |
Jane | Winters | 9/10/2001 |
В этот результирующий набор включены все клиенты базы данных, независимо от того, имеют ли они заказы или нет. Для клиентов, не имеющих заказов, в поле OrderDate появится
Выполнение вычислений в запросах
В строках запроса допускается выполнение вычислений. Для этого нужно просто заменить имя поля в предложении SELECT именем арифметического выражения. Допустим, вам нужно создать запрос для вычисления налога с продаж для складских запасов (сведения о которых хранятся в таблице tblItem). В приведенном ниже запросе SQL вычисляется налог с продаж с учетной ставкой 7,5% для каждого товара.
SELECT ID, Item, Price, Price * 0.075 AS SalesTax
FROM tblItem
После выполнения этого запроса будут получен показанный ниже результат.