次のエンティティがあります。
Student
NSString name
Team inTeam // reverse of Team.students
Team
NSSet assignments
NSOrderedSet students // reverse relationship of Student.inTeam
Assignment
NSDate date // timeless date, only care about the day
NSNumber assignmentCount
Team inTeam // reverse of Team.assignmets
すべての生徒がチームの一員ではありません。すべてのチームに課題があるわけではありません。チームは通常 2 人の生徒 (3 人以下) で構成されます。
すべてのチームについて、そのメンバーの名前と特定の日付の割り当てカウントを表示する必要があります。
これを行うにはさまざまな方法が考えられますが、そのうちの 3 つは次のとおりです。
指定された日付のチーム クエリ割り当てごとに、すべてのチームを取得します。これは効率的ではありません (ただし、assignmentCount を障害オブジェクトとして持つ単一のクエリですべてを取得するのとほとんど同じですか?)
すべてのチームのコレクションを保持し、指定された日付のすべての課題のコレクションを保持します。クエリは 2 つだけですが、2 番目のコレクションを db と同期させる必要があります (assignmentCount は変更されるため、これは行わない方がよいでしょう)。
assignmentCount が変更されるたびにデータをリロードします。明らかに良い解決策ではありません
このすべての情報を 1 回のクエリで取得する方法はありますか?
私が見る問題は、述語を次のようなものに設定すると、ANY team.assignments.date = %@
割り当てのあるチームのみが返されることです。
何か案は?