需要双左联接的所有结果

时间:2018-11-30 20:32:04

标签: sql ms-access join

我有两个桌子。一个带有事务处理,包括书面支票和相应的ReceiptID,另一个带有事务处理,仅具有书面支票。但是,并非所有书面支票都在交易表中。我想将两者合并,并获得所有书面支票和ReceiptID(仅在书面支票表中)。

表格-支票

字段  -贷款否支票否FieldA FieldB FieldC

表格-交易

字段  -贷款没有收据ID支票没有归档Z FieldY

我当时以为

def woodbury_einsum(A, U, V, k):
    A_inv = np.diag(1./np.diag(A))
    tmp   = np.einsum('ab,bc,cd->ad',
                      V, A_inv, U,
                      optimize=['einsum_path', (1, 2), (0, 1)])
    B_inv = np.linalg.inv(np.eye(k) + tmp)
    tmp   = np.einsum('ab,bc,cd,de,ef->af',
                      A_inv, U, B_inv, V, A_inv,
                      optimize=['einsum_path', (0, 1), (0, 1), (0, 2), (0, 1)])
    return A_inv - tmp

应该可以,但不能。至少不是我希望的那样。如果某项检查在支票表中但不在交易表中,则该查询中不会显示该检查。我希望记录会显示出来,但是没有相应的ReceiptNo,这就是我想要的。

示例

支票表

einsum()

交易表

SELECT 
      .., 
      ReceiptID 
   FROM 
      Cheques 
         LEFT JOIN Transactions 
            ON Transactions.LoanNO =Cheques.LoanNo 
           AND Transactions.ChequeNo = Cheques.ChequeNo

联接的查询未提供ChequeNo 454545的记录,我想要的联接是:

╔════════╦══════════╦════════╗
║ LoanNo ║ ChequeNO ║ Amount ║
╠════════╬══════════╬════════╣
║   4444 ║    77777 ║     50 ║
║   5555 ║    99999 ║     60 ║
║   6666 ║   454545 ║    100 ║
╚════════╩══════════╩════════╝

1 个答案:

答案 0 :(得分:0)

问题解决了。在完全确定预期会发生的事情之后,我关闭了MS Access并重新启动了它。然后,SQL按预期工作。不知道为什么以前不起作用。

SELECT Cheques.*, Transactions.ReceiptID
FROM Cheques LEFT JOIN Transactions ON Transactions.ChequeNo = Cheques.ChequeNo AND Transactions.LoanNo = Cheques.LoanNo