私はすべてのテーブルで同じになるフィールドに参加しようとしている3つのテーブルがありますが、テーブルは関連性がありません。これらのテーブルは、リレーショナルに関連していないのでこのシナリオで結合後にレコードが重複しないようにする方法はありますか?
TableA :
Account_Number | merchant_name | sale_date
123456789 | merchant 1 | 04-22-2016
123456789 | merchant 2 | 03-25-2016
123456789 | merchant 3 | 02-26-2016
TableB :
Account_Number | authorization_date | authorization_amount
123456789 | 04-22-2016 | 23
123456789 | 03-5-2016 | 55
TableC :
Account_Number
123456789
、彼らは唯一の各テーブルに持っている可能性が類似した列の値を持って、私は、1本の出力が今まで受けて6つのレコードを示すとは異なる可能性がどのように混乱していますテーブル内の各レコードについて、各テーブルの各値に対して一意のレコードを与えることになります。
各テーブルにnull値を示す応答を表示したい場合、これは可能ですか?私が外側をテーブルに結合すると、存在しないフィールドのnull値が表示されるはずですが、これは機能していないようです。
おそらく、私は外側の結合がどのように動作するのか混乱していますが、すべてのレコードがすべてのテーブルから返されることは理解していましたが、存在しないフィールドに対してはNULLが返されます。以下は、私が持っているクエリとレスポンスです。これは6レコード合計を示していますが、正確ですが、レコードには他のテーブルデータが追加されています。
問合せ:
SELECT A.merchant_Name, A.sale_date, B.authorization_date, B.authorization_amount, C.account_number
FROM (TableA AS A
LEFT OUTER JOIN TableB AS B ON A.[account_number] = B.[account_number])
LEFT OUTER JOIN TableC AS C ON A.[account_number] = C.[account_number]
WHERE (((A.account_number)='123456789'))
ORDER BY A.sale_date, B.authorization_date;
出力:
merchant_Name|sale_date|authorization_date|authorization_amount|acct
merchant 3 02-26-2016 03-05-2016 55 123456789
merchant 3 02-26-2016 04-22-2016 23 123456789
merchant 2 03-25-2016 03-05-2016 55 123456789
merchant 2 03-25-2016 04-22-2016 23 123456789
merchant 1 04-22-2016 03-05-2016 55 123456789
merchant 1 04-22-2016 04-22-2016 23 123456789
必要は値がACCOUNT_NUMBERに基づいて存在している場合、すべての3つのフィールドの応答を持つことです。以下のようなものがありますか?口座番号にあり参加し、それぞれのテーブルが一致するレコードを持っているので、あなたがOUTERを使用して、このクエリを使用して任意のNULL値を取得することはありません
merchant_name | sale_date | authorization_date | authorization_amount | acct
merchant 3 | 02-26-2016| null | null | null
merchant 2 | 03-25-2016| null | null | null
merchant 1 | 04-22-2016| null | null | null
null | null | 03-05-2016 | 55 | null
null | null | 04-22-2016 | 23 | null
null | null | null | null | 123456789