2010-08-05 6 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] 

결과되어야 할 때 : SubSonic2.2 결과에

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

이 정확하지만 Subsonic3에서, GROUP BY 문은 사라지고 쿼리는 한 행만 반환합니다.

내 SqlQuery 표현식이 정확합니까? 아니면 SubSonic3의 버그입니까? 당신의 GROUPBY 당신의 선택 안에 있기 때문에 정확한 구문에 대한 완전히 확실하지

답변

0

, 내가 해냈 예를 쿼리에 대한

MyTableClass.All().Max 

표기법을 사용하는 것은 잘못 생각 보인다. groupBy는 선택 항목이 아니므로 선택 항목 외부에서 해당 GroupBy를 이동해야합니다.

+0

답장을 보내 주셔서 감사합니다.하지만 각 제품의 최대 가격이 필요합니다. 쿼리를 다시 작성할 수 있습니다. SqlQuery query1 = new Select(). From ("Orders"); query1.Aggregates = new List { new 집계 ("ProductID", "ID", AggregateFunction.GroupBy), 새 집계 ("Price", AggregateFunction.Max)}; MessageBox.Show (query1.ToString()); 다시 같은 결과가 나오면 모든 제품의 최대 가격을 얻기 위해 'GROUP BY ProductID'sql 절이 필요합니다. – aris

+0

문제는 SqlQuery가 SQL 쿼리에서 'GROUP BY ProductID'부분을 생성하지 않는다는 것입니다. – aris