mysql中的两个表,如何从这些表中获取数据

时间:2012-02-18 09:35:09

标签: mysql sql

我有两张桌子..

客户账单 - 包含客户账单信息

来自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 |

+ ------------ + ------------ + -------------------- ---------------- +

记得因为他没有开始支付第三张账单,所以在第二张表中不会有任何条目......

可以查询什么?

请建议..

非常感谢!!

1 个答案:

答案 0 :(得分:0)

使用LEFT JOIN

SELECT *, SUM(t2.amount) FROM clientBills t1 LEFT JOIN billRecievedFromClient t2 ON t1.billNumber = t2.forBillNumber

无论如何,没有未开始账单的记录。 但是如果你想要非开始账单的空记录,你可以在查询结束时添加:GROUP BY t1.billNumber