質問があります:
SELECT I.Id
, CAST(SUBSTRING_INDEX(GROUP_CONCAT(I.StatusId ORDER BY I.TransactionId DESC), ',', 1) AS UNSIGNED) AS StatusId
, SUM(I.RefundAmount) AS RefundAmount
FROM (
SELECT I.Id
, IT.Id AS TransactionId
, IT.StatusId
, IF(IT.TypeId = 2, IT.RefundAmount, 0) AS RefundAmount
FROM Items I
INNER JOIN ItemTransactions IT ON IT.ItemId = I.Id
WHERE I.Id = someValue
) I
GROUP BY I.Id
HAVING StatusId = 1 AND RefundAmount = 0
テーブルItems
には、テーブルに格納されたトランザクション レコードがありItemTransactions
ます。私はこのタイプのクエリを使用してきましたが、今回までうまくいきましたが、having
句に問題がありました。
クエリは で機能しSQL Editors
ますが、 で使用すると正しく機能しませんstored procedures
。(誤解しないでください。私はほとんどの .NET でこのクエリを使用していますstored procedures
)。行ごとにデバッグを行ったところ、having
句に問題があることがわかりました。
一時的な修正として、クエリを次のように変更しました。
SELECT I.Id
, I.StatusId
, I.RefundAmount
FROM (
SELECT I.Id
, CAST(SUBSTRING_INDEX(GROUP_CONCAT(I.StatusId ORDER BY I.TransactionId DESC), ',', 1) AS UNSIGNED) AS StatusId
, SUM(I.RefundAmount) AS RefundAmount
FROM (
SELECT I.Id
, IT.Id AS TransactionId
, IT.StatusId
, IF(IT.TypeId = 2, IT.RefundAmount, 0) AS RefundAmount
FROM Items I
INNER JOIN ItemTransactions IT ON IT.ItemId = I.Id
WHERE I.Id = someValue
) I
GROUP BY I.Id
--HAVING StatusId = 1 AND RefundAmount = 0
) I
WHERE I.StatusId = 1 AND I.RefundAmount = 0
クエリは正常に機能します。しかし、誰かがすでにこれに遭遇し、修正を見つけたかどうかを知りたい. を使用してMySQL 5.0
います。
ありがとう