【问题标题】:Two tables in mysql, how to fetch data from those tablesmysql中的两个表,如何从这些表中获取数据
【发布时间】:2012-02-18 09:35:08
【问题描述】:

我有两张桌子..

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

from billRecievedFromClient - 包含我们从客户那里收到的账单金额

mysql> select * from clientBills;

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

|日期 |客户代码 |账单号 |账单金额 |

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

| 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;

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

|日期 |接收代码 |账单号码 |金额 |备注 |

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

| 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 张账单。他完全支付了一张账单,一张账单部分付款,一张账单完整金额到期..

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

|账单号 |账单金额 | SUM(billRecievedFromClient.amount) |

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

| B0001 | 1200.00 | 1200.00 |

| B0002 | 1000.00 | 300.00 |

| B0005 | 400.00 | 00.00 |

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

记住,由于他没有开始支付第三张账单,所以第二张表中不会有任何条目..

可以查询什么?

请建议..

非常感谢!!

【问题讨论】:

  • 请教格式问题...

标签: mysql sql


【解决方案1】:

使用LEFT JOIN

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

无论如何,未开始的账单不会记录。 但是,如果您想要未开始账单的 NULL 记录,您可以在查询末尾添加:GROUP BY t1.billNumber

【讨论】:

  • 它只取一行..所有行的总和...... +------------+------- -----+----------------+ |账单号 |账单金额 | SUM(t2.amount) | +------------+------------+----------------+ | B0001 | 1200.00 | 1733.00 | +------------+------------+----------------+
  • 啊,我明白了,尝试在查询末尾添加 GROUP BY t1.clientCode,t1.billNumber 如果它不起作用,则将带有架构和一些数据的 SQL 粘贴到某处;)
  • 精确查询是 --SELECT t1.billNumber, t1.billAmount, t1.clientCode, SUM(t2.amount) FROM clientBills t1 LEFT JOIN billRecievedFromClient t2 ON t1.billNumber = t2.forBillNumber group by billNumber有 t1.clientCode= 'C0001';
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多