社内の顧客に問い合わせようとしています。私は2つのテーブルA
とを持っていB
ます。 A
1か月間のすべての販売取引データを保存します。B
特定の部門の1か月間のすべての販売取引データを(わずかに異なる形式で)保存します。
顧客が望む結果は、テーブルBのすべてのチェック番号に加えて、テーブルBのチェック番号のいずれかに一致しT_ID
値が。のテーブルAのチェック番号です1, 2, or 3
。
注:AとBの両方で、チェック番号に複数のエントリを含めることができます。
クエリは正しいと思いますが(??)、顧客から「正しくない」と言われています(具体的には、表Aから取得しているレコードが多すぎるとのことです)。
私は自分のSQLに彼に異議を唱えるのに十分な自信がありません(そしてこのクエリは数千行を返します)ので、誰かがもう一度以下のクエリを与えて、どこが間違っているのか教えてくれないかと思っていましたか?
これはMSSQLServer2000で実行されます。
SELECT
A.T_ID,
A.check_number,
A.check_type_id,
A.cashier_id,
A.terminal_id,
A.first_tender,
A.tendered_date_time,
A.tender_amount,
A.change_amount,
A.net_tender_amount,
A.currency_received,
B.account_name,
B.account_number
FROM tCTD AS A
INNER JOIN tGAAAD AS B
ON A.check_number = B.check_number
WHERE EXISTS
( SELECT *
FROM tCTD
WHERE check_number = A.check_number
AND T_ID IN (1, 2, 3)
);