Я работаю над определением SQL-запроса для использования в SQL Server Compact Edition 3.5 на телефоне с Windows Mobile.Мне нужно будет вернуть набор результатов из трех таблиц.
Я точно не помню всех имен столбцов, так как я задаю этот вопрос дома, но вот хороший примертаблицы, с которыми я имею дело.
Table 1: Customers
Table 2: PresoldOrders
Table 3: CustomerDetails
*
________________________________________
| |
|--------------- Customers --------------|
|________________________________________|
| |
| PK int CustomerNumber |
| varchar(125) FirstName |
| varchar(125) LastName |
| varchar(125) Email |
| varchar(200) Address1 |
| varchar(200) Address2 |
| varchar(200) City |
| varchar(2) State |
| varchar(5) Zip |
|________________________________________|
*
________________________________________
| |
|------------ CustomerDetails -----------|
|________________________________________|
| |
| PK int CustomerDetailsId |
| FK int CustomerNumber |
| varchar(255) FieldName |
| varchar(255) FieldValue |
|________________________________________|
*
________________________________________
| |
|------------ PresoldOrders -------------|
|________________________________________|
| |
| PK int PresoldOrderId |
| FK int CustomerNumber |
| int OrderNumber |
| int RouteStopNumber |
| datetime DeliveryDate |
| varchar(100) Other1 |
| varchar(100) Other2 |
|________________________________________|
Теперь запросдолжен вернуть все записи, которые существуют у клиентов, даже если они не существуют в таблице PresoldOrderHeaders.Эта часть довольно проста, я планирую использовать левое внешнее соединение.Вторая часть запроса немного сложнее.
Вот запрос, который я построил до сих пор.
SELECT c.CustomerNumber
c.FirstName
c.LastName
c.Email
c.Address1
c.Address2
c.City
c.State
c.Zip
po.OrderNumber
po.DeliveryDate
po.Other1
po.Other2
FROM Customer c
LEFT OUTER JOIN PresoldOrders po on c.CustomerNumber = po.CustomerNumber
ORDER BY po.RouteStopNumber;
Сложная часть - это таблица CustomerDetails.Вот пример некоторых данных
_________________________________________________________
| | | | |
| PK | CustomerNumber | FieldName | FieldValue |
|-------|-----------------|--------------|----------------|
| 1 | 1 | A | 125 |
|-------|-----------------|--------------|----------------|
| 2 | 1 | B | 126 |
|-------|-----------------|--------------|----------------|
| 3 | 1 | C | 127 |
|-------|-----------------|--------------|----------------|
| 4 | 2 | A | 138 |
|-------|-----------------|--------------|----------------|
| 5 | 2 | B | 140 |
|-------|-----------------|--------------|----------------|
| 6 | 2 | C | 143 |
|-------|-----------------|--------------|----------------|
|_________________________________________________________|
. Для информации, которую я буду отображать в Flex Grid Component One, поля FieldName, перечисленные в таблице CustomerDetails, будут фиксированными.
Здесьхочу, чтобы я хотел заархивировать:
_____________________________________________________________________________________________________________________
| | | | | | | |
| CustomerNumber | FirstName | LastName | ... | FieldName A's value | FieldName B's Value | FieldName C's Value |
|-----------------|-----------|----------|-----|---------------------|---------------------|--------------------------|
| 1 | John | Someone | ... | 125 | 126 | 127 |
|-----------------|-----------|----------|-----|---------------------|---------------------|--------------------------|
| 2 | Dan | Other | ... | 138 | 140 | 143 |
|-----------------|-----------|----------|-----|---------------------|---------------------|--------------------------|
|_____________________________________________________________________________________________________________________|
Обычно, я имел бы имена столбцов для A, B и C, определенные в таблице 'CustomerDetails';однако эту таблицу нельзя изменить, поэтому я должен работать с тем, что мне дали.Требования в спецификации для моей задачи - иметь более 15 столбцов, которые будут отображаться в сетке на мобильном устройстве;не то, что я бы пошел, но это требования.
Хорошо, наконец, вопрос:
Можно ли использовать sql для запроса таблицы сопоставления значения ключа и отображать значение этого ключа в столбцахкак выше?Это требование, которое у меня есть, и я думаю, что мне нужно будет создать один запрос с таблицей соединений с предварительными заказами, а затем получить список всех деталей для каждого клиента в списке, выполнить итерацию и объединить таблицу данных в коде напортативный.