Windows MobileのハンドセットでSQL Server Compact Edition 3.5で使用するSQLクエリを定義する作業を進めています。 3つのテーブルから結果セットを取得する必要があります。キー値のペアテーブルからの複数の列のクエリデータベース
私は自宅でこの質問をしているので、私はすべての列名を覚えていませんが、ここで私が扱っているテーブルの良い例です。
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 |
|________________________________________|
*今*
________________________________________
| |
|------------ PresoldOrders -------------|
|________________________________________|
| |
| PK int PresoldOrderId |
| FK int CustomerNumber |
| int OrderNumber |
| int RouteStopNumber |
| datetime DeliveryDate |
| varchar(100) Other1 |
| varchar(100) Other2 |
|________________________________________|
________________________________________
| |
|------------ CustomerDetails -----------|
|________________________________________|
| |
| PK int CustomerDetailsId |
| FK int CustomerNumber |
| varchar(255) FieldName |
| varchar(255) FieldValue |
|________________________________________|
、彼らが存在しない場合でも、顧客に存在するすべてのレコードを返す必要がありますクエリ'PresoldOrderHeaders'テーブルにあります。この部分はかなり簡単ですが、私はちょうど左外部結合を使用する予定です。クエリの2番目の部分はもう少し複雑です。
これまでに作成したクエリは次のとおりです。
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テーブルです。ここでIは成分の一つフレックスグリッドに表示される情報のためのいくつかのデータ
_________________________________________________________
| | | | |
| 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 |
|-------|-----------------|--------------|----------------|
|_________________________________________________________|
の一例であり、フィールド名の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以上の列を持つことです。私が行くべきものではありませんが、それらは要件です。
[OK]を最後に、質問:
一つは、キー値のペアリングテーブルを照会するためにSQLを使用し、これらのキーの値のは、上記のように列に表示できますか?これは私が必要としていることであり、私はpresoldordersテーブルに自分のjoinで1つのクエリを作成し、リスト内の各顧客のすべての詳細のリストを取得し、ハンドヘルド。
SQLクエリに多数のカンマがありません。 –