Steaphann
Steaphann

Reputation: 2777

NSPredicate over different entities

I want to make NSPredicate over different entities. Here is my core database.

enter image description here

To make it simple, this is the query I should do.

Select c.c_name From Company c, Person p Where c.c_id = p.cu_company_id

Now I was wondering how my predicate should look like if I want to achieve the result like the query above.

Upvotes: 1

Views: 273

Answers (1)

Srikanth
Srikanth

Reputation: 1735

Assuming that c_id and cu_company_id are integers, you can try

    NSFetchRequest *fr = [[NSFetchRequest alloc] initWithEntityName:@"Person"];
    NSError *error;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"cu_company_id == data.company.c_id"];
    [fr setPredicate:predicate];
    NSArray *persons = [self.managedObjectContext executeFetchRequest:fr error:&error];

and once you have persons array, you can then loop through it and get the person's name. To get it the other way around

    NSFetchRequest *fr = [[NSFetchRequest alloc] initWithEntityName:@"Company"];
    NSError *error;
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"c_id == data.person.cu_company_id"];
    [fr setPredicate:predicate];
    NSArray *companies = [self.managedObjectContext executeFetchRequest:fr error:&error];

and once you have companies array, you can then loop through it and get the company's name.

Upvotes: 1

Related Questions