4
내 앱에서 4 가지 가장 인기있는 제품을 나열하려고합니다.
제품의 인기는 주문량의 총량에 의해 결정됩니다.NSFetchRequest sum, group by and sorting
// Create an expression to sum the order quantity
NSExpressionDescription *sumExpression = [[NSExpressionDescription alloc] init];
sumExpression.name = @"sumQuantity";
sumExpression.expression = [NSExpression expressionWithFormat:@"@sum.%K", OrderAttributes.quantity];
sumExpression.expressionResultType = NSInteger32AttributeType;
// Create the fetch request
NSFetchRequest *request = [Order createFetchRequest];
request.resultType = NSDictionaryResultType;
request.propertiesToFetch = @[OrderRelationships.product, sumExpression];
request.propertiesToGroupBy = @[OrderRelationships.product];
request.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:sumExpression.name ascending:NO]];
request.fetchLimit = 4;
: 아래 코드는 내 방식 내 핵심 데이터 모델에 대한 가져 오기 요청을 얻기에
SELECT TOP 4 SUM(quantity) as sumQuantity, Product
FROM [Order]
GROUP BY Product
ORDER BY 1 DESC
입니다 :
아래 쿼리는 내가 할 노력하고있어 설명하기 위해입니다
내 문제는 sortDescriptor, 그것은 단지 Order (app 예외)의 직접 속성을 허용하는 것 같다.
정렬은 매우 중요합니다. 반환되는 네 개의 레코드를 결정하기 때문입니다.
참고 : MagicalRecord 및 Mogenerator를 사용하고 있습니다. 클래스 접두사를 제거했습니다.
제품의 카운터를 추적하는 것은 실제로 나를위한 옵션이 아닙니다. 나는 서버와 동기화되어서 신맛이 나고 일관성이 없다. 이것은 상당히 큰 한계입니다. 그래도 도와 줘서 고마워. – Zyphrax