Поделиться через


Пример формирования данных

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

SHAPE {SELECT CustomerID, ContactName FROM Customers}   
APPEND ({SELECT OrderID, OrderDate, CustomerID FROM Orders} AS chapOrders   
RELATE customerID TO customerID)   

Если эта команда используется для открытия объекта набора записей (как показано в примере Visual Basic для формирования данных), он создает главу (chapOrders) для каждой записи, возвращенной из таблицы Клиентов. Эта глава состоит из подмножества набора записей , возвращенного из таблицы заказов. Глава chapOrders содержит все запрошенные сведения о заказах, сделанных данным клиентом. В этом примере глава состоит из трех столбцов: OrderID, OrderDateи CustomerID.

Первые две записи результирующего набора записей таковы:

Идентификатор клиента Имя контакта Идентификатор заказа Дата заказа Идентификатор клиента
ALFKI Мария Андер 10643

10692

10702

10835

10952

11011
1997-08-25

1997-10-03

1997-10-13

1998-01-15

1998-03-16

1998-04-09
ALFKI

ALFKI

ALFKI

ALFKI

ALFKI

ALFKI
ANATR Ана Трухильо 10308

10625

10759

10926
1996-09-18

1997-08-08

1997-11-28

1998-03-04
ANATR

ANATR

ANATR

ANATR

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

Существует второй способ использовать команды SHAPE: а именно для создания родительского набора записей из дочернего набора записей . Записи в дочернем наборе записей группируются, как правило, с помощью предложения BY, и одна строка добавляется в родительский набор записей для каждой результирующей группы в дочернем наборе. Если предложение BY опущено, дочерний набор записей будет формировать одну группу, а родительский набор записей будет содержать ровно одну строку. Это полезно для расчета итоговых агрегатов всего дочернего Recordset.

Конструкция команды SHAPE также позволяет программным способом создавать фигурные Набор записей. Затем вы можете получить доступ к компонентам набора записей программными средствами или с помощью соответствующего визуального элемента управления. Команда для создания формы выдается так же, как и любой другой текст команды ADO. Дополнительные сведения см. раздел Команды фигур в общем.

Независимо от того, каким образом формируется родительский Recordset , он будет содержать главный столбец, который используется для связи с дочерним Recordset . Если требуется, родительский набор записей также может содержать столбцы, содержащие агрегаты (SUM, MIN, MAX и т. д.) над дочерними строками. Как родительский, так и дочерний набор записей могут содержать столбцы, содержащие выражение строки в Набор записей, а также столбцы, которые являются новыми и первоначально пустыми.

Этот раздел продолжается следующей темой.