Androidで次のクエリ(擬似コード)を実行しようとしています。
SELECT C.ID, C.NAME, CASE ISNULL(G.GROUPID,0) = 0 THEN 0 ELSE 1 END INGROUP
FROM CONTACTS C
LEFT JOIN GROUPMEMBERSHIP G ON G.CONTACTID = C.ID AND G.GROUPID = ?
連絡先がグループのメンバーであるかどうかを示す0/1フィールドとともに、デフォルトの連絡先ContentProviderを介して、システムアドレスブック内のすべての連絡先のIDと名前を選択しようとしています?
。
もちろん、すべての連絡先を簡単に取得してから、Adapterクラスでメンバーシップを個別にループしてクエリするのは簡単ですが、1つの外部結合クエリとして2つのクエリを実行すると、パフォーマンスが大幅に向上すると思います。
標準の高レベルの文字列投影とContentResolver.query()
メソッドでこれを行うことはできますか?または、この種のクエリでは、より直接的なSQL実行を掘り下げる必要がありますか?