0

ロケーション テーブル レコードには、アドレス テーブルを参照する mailing と business addressID の 2 つのアドレス ID があります。

したがって、住所テーブルには、特定の住所 ID に対して最大 2 つのレコードが含まれます。

ロケーション ID を指定すると、すべての tbl_Location フィールドとすべての tbl_Address フィールドを 1 つの結果セットで返す sproc が必要です。

            LocationID INT,
            ClientID INT,
            LocationName NVARCHAR(50),
            LocationDescription NVARCHAR(50),
            MailingAddressID INT,
            BillingAddressID INT,
            MAddress1 NVARCHAR(255),
            MAddress2 NVARCHAR(255),
            MCity NVARCHAR(50),
            MState NVARCHAR(50),
            MZip NVARCHAR(10),
            MCountry CHAR(3),
            BAddress1 NVARCHAR(255),
            BAddress2 NVARCHAR(255),
            BCity NVARCHAR(50),
            BState NVARCHAR(50),
            BZip NVARCHAR(10),
            BCountry CHAR(3)

必要なフィールドを含む一時テーブルを作成することから始めましたが、これを達成する方法に少し行き詰まっています。

必要な住所フィールドごとにサブ選択を行うこともできますが、少し面倒です。

アドレス ID を受け入れ、その ID のすべてのフィールドを返すテーブル値関数を既に取得していますが、それを必要な結果に統合する方法がわかりません。

ちなみに、このテーブルを作成するために 3 つの項目を選択しているように見えます。1: 場所、2: 郵送先住所、3: 請求先住所です。

私がやりたいことは、ビューを作成してそれを使用することです。

どんな支援も役に立ちます。

ありがとう。

4

2 に答える 2

4

次の行に沿った何かが機能します:

select L.*, 
a1.Address1 as MAddress1, a1.Address2 as MAddress2,
a2.Address1 as BAddress1, a2.Address2 as BAddress2
from location L
  inner join Address a1 on (a1.AddressId = L.MailingAddressId)
  inner join Address a2 on (a2.AddressId = L.BillingAddressId)

すべてのフィールドを入力したわけではありませんが、おわかりいただけたでしょうか。

いずれかのアドレス ID が null になる可能性がある場合は、代わりに左結合を使用できることに注意してください。

于 2010-03-23T18:35:09.810 に答える
0

私があなたの質問を正しく理解していれば、次のようなものが必要です。

SELECT
    L.*,
    MAddress1 = M.Address1,
    MAddress2 = M.Address2,
    MCity = M.City,
    MState = M.State,
    MZip = M.Zip,
    MCountry = M.Country
    BAddress1 = B.Address1,
    BAddress2 = B.Address2,
    BCity = B.City,
    BState = B.State,
    BZip = B.Zip,
    BCountry = B.Country
FROM
    tbl_Location L
    INNER JOIN tbl_Address M
        ON L.MailingAddressID = M.MailingAddressID
    INNER JOIN tbl_Address B
        ON L.BillingAddressID = B.BillingAddressID
WHERE
    L.LocationID = @LocationID
于 2010-03-23T18:36:00.150 に答える