0

エイリアス(scount、samount)を使用しようとすると、SQLクエリが機能しないという問題があります。クエリはエイリアスなしで正常に実行され、最初の(scount)のみを使用しても正常に機能しますが、2番目のクエリ(samount)を追加するとすぐに、クエリの実行に失敗します。これは、何らかの理由でマイナスクエリを実行することに関連していると思います。

エイリアスを使用して値を返すことができるように、誰かがこれを解決するのを手伝ってもらえますか?

select count(t.invoiceID) scount, sum(amount) samount  -
IFNULL(
(
select sum(p.amount) as pamount  
    from invoice t,  invoiceFactoring ift, InvoiceType it, Payment p                    
    where t.issuerID = 38
    AND ift.invoiceID = t.invoiceID
    AND t.invoiceID = p.invoiceID
    AND it.invoiceTypeID = t.invoiceTypeID
    AND now() > date_add(t.invoiceExpiryDate, INTERVAL 45 DAY) 
)
,0)
  from invoice t,  invoiceFactoring ift, InvoiceType it
  where issuerID = 38
  AND ift.invoiceID = t.invoiceID
  AND it.invoiceTypeID = t.invoiceTypeID
  AND now() > date_add(t.invoiceExpiryDate, INTERVAL 45 DAY)
  AND t.disabled = 0 
  AND it.typeCategory = 1
4

1 に答える 1

1

エイリアスは計算後に実行されます。

SELECT 1 blah - 2 <--- wrong
SELECT 1 - 2 blah <--- correct

PSの説明

あなたの質問は本質的にこれです:

SELECT ... scount, ... samount - IFNULL(...)
FROM ...

と交換するだけです

SELECT ...scount, ... - IFNULL(...) samount
FROM ...

あなたが受け入れ始めるまであなたはほとんど別のものを得ることができないので、それがあなたを助けるならば答えを受け入れてください。

于 2012-06-27T08:34:33.213 に答える