私はこのクエリを持っていて、ほとんどの場合は機能しているようですが、何かを返す必要があることがわかっている場合でも、NULLを取得しています。
私はから始めてselect
、それからこれ
(select sum(total) from orders
where customer = 9
and iscredit = 1
and isdeleted = false and not id = 1560)
このコードの平和により、顧客9の注文の合計額が取得され、以前の注文の合計のように現在の注文ではありません...また、iscredit = 1は、これらがクレジット注文であることを意味します。
次に、このクエリを追加します
(select sum(total) from orders
where customer = 9
and iscredit = 0
and isdeleted = false and not id = 1560)
同じことをしますが、iscreditは0なので、クレジットではない注文です。
次に、このクエリで支払われた金額を差し引きたい
- (select ifnull(sum(p.amount), 0) from payment p
inner join orders o
on p.order = o.id
where o.customer = 9) as previous
だから、これは私のクエリがどのように見えるかをまとめて....
select
(
select sum(total)
from orders
where customer = 9 and iscredit = 1 and isdeleted = false and not id = 1560
)
+
(
select sum(total)
from orders
where customer = 9 and iscredit = 0 and isdeleted = false and not id = 1560
)
-
(
select ifnull(sum(p.amount), 0)
from payment p
inner join orders o
on p.order = o.id
where o.customer = 9
) as previous
これを書くためのより良い方法はありますか?
ヒントをいただければ幸いです。
ありがとう