我有两个桌子。一个带有事务处理,包括书面支票和相应的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 ║
╚════════╩══════════╩════════╝
答案 0 :(得分:0)
问题解决了。在完全确定预期会发生的事情之后,我关闭了MS Access并重新启动了它。然后,SQL按预期工作。不知道为什么以前不起作用。
SELECT Cheques.*, Transactions.ReceiptID
FROM Cheques LEFT JOIN Transactions ON Transactions.ChequeNo = Cheques.ChequeNo AND Transactions.LoanNo = Cheques.LoanNo