2017-03-19 14 views
-2
+--------+-----------+-------+ 
| PartId | InvoiceId | Price | 
+--------+-----------+-------+ 
| 200 | 1000 | 10000 | 
| 201 | 1001 | 22000 | 
| 202 | 1002 | 30000 | 
+--------+-----------+-------+ 

+--------+-----------+-------+ 
| PartId | PaymentId | Price | 
+--------+-----------+-------+ 
| 200 | 1000 | 1000 | 
| 200 | 1001 | 3000 | 
| 201 | 1002 | 5000 | 
+--------+-----------+-------+ 

+-----------+-----------+-------------------------+ 
| InvoiceId | PaymentId | Balance Need to be Paid | 
+-----------+-----------+-------------------------+ 
| 1000  | 1000 | 9000     | 
| 1000  | 1001 | 6000     | 
| 1001  | 1002 | 17000     | 
+-----------+-----------+-------------------------+ 

カーソルはパフォーマンスがあまり良くありません。カーソルを使用しないと、請求書支払いマッピングテーブルを更新する方法はありますか?更新中にカーソルを避ける

+0

請求書のマッピングテーブルがどのようなものです:あなたはupdateクエリでjoinを使用することができますか?どのように更新したいですか?あなたの質問は明確ではありません。 –

+0

3番目のテーブルは請求書支払いマッピングテーブルです。私がやりたいことは、その日の終わりです。マップする必要があり、それぞれの請求書ごとにどれだけの残高を支払う必要があるのか​​を確認してください。 – user2792602

+1

あなたはカーソルの実装がありますか?それを改善したいですか?もしそうなら、コードを教えてください。 –

答えて

1

これは1回の更新で実行できます。あなたの質問はすべての必要な詳細を持っていないので、以下はむしろ投機的です。

update ip 
    set BalanceToBePaid = (i.price - p.sumprice) 
from invoicepayment ip join 
    invoices i 
    on ip.invoiceid = i.invoiceid join 
    (select paymentid, sum(price) as sumprice 
     from payments 
     group by paymentid 
    ) p 
    on ip.payment = p.payment; 
+0

最初は、マッピングテーブルにレコードがありません。私がマッピングテーブルにレコードを追加する必要があり、各請求書ごとにどれくらい収集する必要があるかを確認する必要があります。それは今はっきりしていますか? – user2792602

関連する問題