我正在尝试查询我的内部客户。我有两张桌子A
和B
. A
存储一整月的所有销售交易数据。B
存储特定部门整月的所有销售交易数据(形式略有不同)。
客户想要的结果是表 B 中的所有检查 #,加上表 A 中与表 B中的任何检查 # 匹配且T_ID
值为 的任何检查 # 1, 2, or 3
。
注意:在 A 和 B 中,检查 # 可以有多个条目。
我认为我的查询是正确的(??),但客户告诉我它“看起来不正确”(具体来说,他是说我们从表 A 中提取了太多记录)。
我对我的 SQL 没有足够的信心来反驳他(并且这个查询返回了几千行),所以我想知道是否有人可以给下面的查询一次,让我知道我哪里出错了?
这是在 MS SQL Server 2000 上运行的。
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)
);