【发布时间】:2018-11-30 20:32:03
【问题描述】:
我有两张桌子。一个包含交易,包括书面支票和相应的 ReceiptID,另一个仅包含书面支票。然而,并不是所有的书面支票都在交易表中。我想加入两者并获得所有书面支票和 ReceiptID(仅在书面支票表中)。
表格 - 支票
字段 - LoanNo ChequeNo FieldA FieldB FieldC
表格 - 交易
字段 - LoanNo ReceiptID ChequeNo FiledZ FieldY
我在想一个
SELECT
..,
ReceiptID
FROM
Cheques
LEFT JOIN Transactions
ON Transactions.LoanNO =Cheques.LoanNo
AND Transactions.ChequeNo = Cheques.ChequeNo
应该可以,但是不行。至少不是我希望的方式。如果某张支票在 Checkes 表中但不在 Transactions 表中,则它不会显示在此查询中。我的期望是记录会显示,但没有相应的 ReceiptNo,这正是我想要的。
例子
检查表
╔════════╦══════════╦════════╗
║ LoanNo ║ ChequeNO ║ Amount ║
╠════════╬══════════╬════════╣
║ 4444 ║ 77777 ║ 50 ║
║ 5555 ║ 99999 ║ 60 ║
║ 6666 ║ 454545 ║ 100 ║
╚════════╩══════════╩════════╝
交易表
+========+==========+========+===========+
| LoanNo | ChequeNO | Amount | ReceiptID |
+========+==========+========+===========+
| 4444 | 77777 | 50 | A5522 |
+--------+----------+--------+-----------+
| 5555 | 99999 | 60 | B6688 |
+--------+----------+--------+-----------+
加入的查询没有给出ChequeNo 454545的记录,我想要的加入是:
+========+==========+========+===========+
| LoanNo | ChequeNO | Amount | ReceiptID |
+========+==========+========+===========+
| 4444 | 77777 | 50 | A5522 |
+--------+----------+--------+-----------+
| 5555 | 99999 | 60 | B6688 |
+--------+----------+--------+-----------+
| 6666 | 454545 | 100 | |
+--------+----------+--------+-----------+
【问题讨论】:
-
使用 Access 查询设计器并将 JOIN 修改为“包括来自 Checks 的所有记录以及仅来自匹配的 Transactions 的记录”。
-
LoanNo 可以不在支票中吗?
-
你没有清楚地解释你想要什么。请给minimal reproducible example。 PS 格式代码内联使用
`backquotes`& 作为一个块通过缩进四个空格。考虑短表别名。 -
@philipxy,我想我确实解释了我想要什么。我希望查询为我提供“支票”表中的所有记录,包括“交易”表中的收据 ID。如果“交易”中没有对应的支票记录,则该结果字段应为空,但结果仍应给出“支票”表中的记录。
-
@user2588110 这个例子没有意义。 LoanNo 6666 来自哪里? Checks 表中的 ChequeNo 454545 在哪里?