0

私は次のdbスキーマを持っています(クエリに必要な各テーブルの列についてのみ言及しています):

bills
-------
id
amount (decimal)
collection_case_id


collection_case
------------------
id


payments
----------
id
bill_id
amount (decimal)
type (char(2)) - "CH" stands for check payment, field used for polymorphism 

check_payments
---------------
payment_id

一連の収集ケースでは、小切手による支払いから得られる利息の合計を取得する必要があります。私は現在、収集ケース基準のセットのすべての請求書レコードを取得した後、メモリ内でこれらの計算を行っています。請求書ごとに、受け取った小切手の合計を単純に加算します。受け取った小切手の合計が請求額よりも大きい場合は、請求額を加算します。

たとえば、受信したクエリの合計は次のようになります(コレクションケース1および2):

select sum(payment.amount) as received 
from bills bill
cross join payments payment inner join check_payments checkpayment 
on 
payment.id=checkpayment.payment_id 
where payment.type='CH'
 and payment.bill_id=bill.id 
 and (bill.collection_case_id in (1 , 2))
4

1 に答える 1

1

これがあなたの意図したものであるかどうかは本当にわかりません。

select IF(sum(payment.amount) > bill.amount, sum(payment.amount)-bill.amount, 0) as interest  
from bills bill
cross join payments payment inner join check_payments checkpayment 
on 
payment.id=checkpayment.payment_id 
where payment.type='CH'
 and payment.bill_id=bill.id 
 and (bill.collection_case_id in (1 , 2))
于 2012-10-11T02:48:08.307 に答える