我有两张桌子..
客户账单 - 包含客户账单信息
来自billRecievedFromClient 的- 包含我们从客户收到账单的金额
的MySQL>从clientBills中选择*;
+ ------------ + ------------ + ------------ + ------- ----- +
|日期| clientCode | billNumber | billAmount |
+ ------------ + ------------ + ------------ + ------- ----- +
| 2012-02-17 | C0001 | B0001 | 1200.00 |
| 2012-02-17 | C0001 | B0002 | 1000.00 |
| 2012-02-17 | C0002 | B0003 | 1233.00 |
| 2012-02-18 | C0003 | B0004 | 12000.00 |
| 2012-02-18 | C0001 | B0005 | 400.00 |
+ ------------ + ------------ + ------------ + ------- ----- +
的MySQL> select * from billRecievedFromClient;
+ ------------ + -------------- + --------------- + - ------ + --------- +
|日期| receivedCode | forBillNumber |金额|备注|
+ ------------ + -------------- + --------------- + - ------ + --------- +
| 2012-02-18 | R0001 | B0001 | 200.00 |现金|
| 2012-02-18 | R0002 | B0001 | 300.00 |现金|
| 2012-02-18 | R0003 | B0002 | 300.00 |现金|
| 2012-02-18 | R0004 | B0003 | 233.00 |现金|
| 2012-02-18 | R0005 | B0001 | 700.00 |现金|
+ ------------ + -------------- + --------------- + - ------ + --------- +
现在我想要这样的信息--- ,即对于客户C0001,有3个账单。他完全支付了一张账单的费用,部分支付了一张账单,并且还有一笔账单到期。
+ ------------ + ------------ + -------------------- ---------------- +
| billNumber | billAmount | SUM(billRecievedFromClient.amount)|
+ ------------ + ------------ + -------------------- ---------------- +
| B0001 | 1200.00 | 1200.00 |
| B0002 | 1000.00 | 300.00 |
| B0005 | 400.00 | 00.00 |
+ ------------ + ------------ + -------------------- ---------------- +
记得因为他没有开始支付第三张账单,所以在第二张表中不会有任何条目......
可以查询什么?
请建议..
非常感谢!!
答案 0 :(得分:0)
使用LEFT JOIN
SELECT *, SUM(t2.amount) FROM clientBills t1 LEFT JOIN billRecievedFromClient t2 ON t1.billNumber = t2.forBillNumber
无论如何,没有未开始账单的记录。
但是如果你想要非开始账单的空记录,你可以在查询结束时添加:GROUP BY t1.billNumber