2010-08-05 85 views
1

我正在創建一個帶有聚合的簡單查詢。這個例子是:Subsonic 3查詢 - 聚合錯誤

string query = new SubSonic.Query.Select(
     SubSonic.Query.Aggregate.GroupBy("ProductID", "ID"), 
     SubSonic.Query.Aggregate.Max("Price", "MaxPrice") 
    ).From("Orders").ToString(); 

SQL結果是:

SELECT ProductID AS ID, MAX(Price) AS MaxPrice 
FROM [Orders] 

時,結果應該是:

SELECT ProductID AS ID, MAX(Price) AS MaxPrice 
FROM [Orders] 
GROUP BY ProductID 

在SubSonic2.2結果是正確的,但在Subsonic3,該集團BY語句消失並且查詢只返回一行。

我的SqlQuery表達是否正確,或者它是SubSonic3中的錯誤?

回答

0

不完全確定確切的語法,我用的是

MyTableClass.All().Max 

符號查詢it.Your例子看起來錯的,因爲你的GROUPBY裏面你選擇。 groupBy不是選擇的一部分,因此您可能需要將該GroupBy移動到您選擇的範圍之外

+0

感謝您的回覆,但我需要每個產品的最高價格。 我可以重寫查詢: SqlQuery query1 = new Select()。From(「Orders」); query1.Aggregates = new列表 { 新聚合(「ProductID」,「ID」,AggregateFunction.GroupBy), 新聚合(「Price」,AggregateFunction.Max)}; MessageBox.Show(query1.ToString()); 但同樣的結果,我需要'GROUP BY ProductID'sql語句來獲得每個產品的最大價格。 – aris 2010-08-05 16:39:38

+0

問題是SqlQuery不會在SQL查詢中生成'GROUP BY ProductID'部分 – aris 2010-08-05 16:41:45