我有两张桌子。
发票
ID | Amount
-----------
1 | 123.54
2 | 553.46
3 | 431.34
4 | 321.31
5 | 983.12
贷记凭证
ID | invoice_ID | Amount
------------------------
1 | 3 | 25.50
2 | 95 | 65.69
3 | 51 | 42.50
我想从这两个表中得到这样的结果集
ID | Amount | Cr_memo
---------------------
1 | 123.54 |
2 | 553.46 |
3 | 431.34 | 25.50
4 | 321.31 |
5 | 983.12 |
我一直在搞乱连接而且整个早上都没有真正的运气。
这是我尝试过的最后一个查询,它从Credit Memo表中提取了所有内容......
SELECT A.ID, A.Amount FROM Invoices AS A
LEFT JOIN Credit_Memos AS B ON A.ID = B.invoice_ID
感谢任何帮助或指示。
答案 0 :(得分:2)
您的查询可以正常工作。只需添加Credit_memo.Amount
别名:
SELECT Inv.ID,Inv.Amount,IFNULL(C.Amount,'') AS Cr_memo
FROM Invoices Inv LEFT JOIN
Credit_Memos C ON Inv.ID=C.invoice_ID
结果:
ID AMOUNT CR_MEMO
1 124
2 553
3 431 25.50
4 321
5 983
请参阅SQL FIDDLE中的结果。
答案 1 :(得分:0)
您几乎得到答案Left Outer Join
正是您所需要的,但您错过了从Cr_memo
表中选择Credit_Memos
。由于您不希望在Invoices_ID
表格中没有Credit Memos
时显示空值,请使用IFNULL
将NULL's
设为空字符串
SELECT A.ID, A.Amount, IFNULL(B.Cr_memo,'') AS Cr_memo
FROM Invoices AS A
LEFT JOIN Credit_Memos AS B
ON A.ID = B.invoice_ID
答案 2 :(得分:0)