Je voudrais avoir l'équivalent des données de base de la fonction SQL:compte distinct
SELECT species, sex, COUNT(*) FROM Bird GROUP BY species, sex;
Une demande qui renvoie par cette
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| Bus | m | 2 |
| Car | f | 1 |
+---------+------+----------+
avec les entrées suivantes:
INSERT INTO Bird VALUES ('BlueBird','Car','f');
INSERT INTO Bird VALUES ('RedBird','Bus','m');
INSERT INTO Bird VALUES ('RedBird','Bus','m');
J'ai répondu à la demande distincte, mais j'ai du mal à avoir le compte (*). Voici ce que j'ai:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Bird" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
[request setReturnsDistinctResults:YES];
[request setResultType:NSDictionaryResultType];
NSDictionary *entityProperties = [entity propertiesByName];
NSMutableArray *properties = [NSMutableArray arrayWithObject:[entityProperties objectForKey:@"species"]];
[properties addObject:[entityProperties objectForKey:@"sex"]];
[request setPropertiesToFetch: properties];
Que dois-je ajouter?
Un grand merci
Merci pour votre réponse Benoît. En fait, j'ai pensé à un tel algorithme, mais il finit par ne pas être très rapide sur des ensembles de données plus importants. Peut-être que je devrais essayer de l'affiner, mais je pensais que tout obtenir en une seule demande serait vraiment plus efficace. – lorenzo