我有一個主表「合同」與一個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