我有一个主表“合同”与一个id(主键)和一些列我必须汇总为每一行。 我的第二张表“支付”与“合同”有1至n的关系,对于“合同”中的每一行,“支付”中有零到几行。结合两个选择不同的行数和一个组
我可以选择 “contrats” - 表这样:
select c.Id, sum(c.field1 + c.field2 + c.field3) as TotalC from contracts c group by c.Id
我可以从 “费” - 表像选择:
select p.Id, sum(p.field1) from payments p group by p.Id
所以c.Id和p.Id有关系。两份选择都会为每个合约ID提供一行。但并非每个合同都有付款。是否有可能以合理的方式将这两项选择结合起来?或者我会更好地在我的程序中获得这两个选择,并在sql之外进行比较?
我可以使用一个INNER JOIN像scaisEdge建议,但 我有这个问题是:
选择的结果之前,它被分为:
ID | TotalContractSum | SinglePayment 22 | 50,00 | 25,00 22 | 50,00 | 30,00
结果后,分组(在endresult ):
22 | 100,00 | 55,00
现在SinglePayment按照它应该组合在一起,但TotalContractSum已经翻了一番,因为有两行在付款表中。总之,分组是这里的问题。
如果不应该使用单排和:通过p.Id选择p.Id,总和(p.field1)从支付P组,是相同的选择P。 Id,p.field1 from payment p –
请提供两个表格的结构。只是想知道这两张表之间是否有任何关系。 –
这类问题可能是设计不佳的症状 – Strawberry