需要双左连接的所有结果
Posted
技术标签:
【中文标题】需要双左连接的所有结果【英文标题】:Need all results from double left join 【发布时间】: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 在哪里?
【参考方案1】:
问题解决了。在非常确定我预期会发生的事情之后,我关闭了 MS Access 并重新启动了它。然后 SQL 按预期工作。不知道为什么它以前不起作用。
SELECT Cheques.*, Transactions.ReceiptID
FROM Cheques LEFT JOIN Transactions ON Transactions.ChequeNo = Cheques.ChequeNo AND Transactions.LoanNo = Cheques.LoanNo
【讨论】:
以上是关于需要双左连接的所有结果的主要内容,如果未能解决你的问题,请参考以下文章