我有一個使用了TOTAL()
聚合函數的SQL查詢:與TOTAL()的SQLite查詢返回空行,拋出ConstraintException上閱讀
SELECT
c.Id,
c.Name,
...
b.BatchNumber,
TOTAL(d.OrderedAmount) as TotalOrderedAmount
FROM OrderProducts a
LEFT JOIN WarehouseProducts b ON a.WarehouseProductId = b.Id
...
WHERE a.OrderId = @OrderId
AND (e.Status = @OrderedStatus OR e.Status IS NULL)
(多餘的行爲清楚起見移除)
這即使沒有找到結果,查詢也會返回至少一行,導致每列都是DBNull(我假設)。當我嘗試將此查詢的結果加載到DataTable中時,由於空值,我得到一個ConstraintException。
如果我用0 as TotalOrderedAmount
替換TOTAL()
行,返回的行數爲0,一切正常。
我試過使用WHERE a.Id IS NOT NULL
,但無論我嘗試,總是至少有一行返回。
如何修改此查詢,以便在沒有找到產品時返回的行數爲0,即使使用聚合函數?
可能的解決辦法是在回答[這個問題](擴展方法http://stackoverflow.com/questions/ 7580929/mysqldatareader-datatable-fillreader-throws-constraintexception),這將允許您加載沒有約束的DataTable。 – davmos 2013-05-04 22:49:32