Я хочу выполнить следующий запрос (в псевдокоде) на 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 = ?
Я ищу, чтобы выбрать идентификатор и имя всех контактов в адресной книге системы, используя по умолчанию Контакты ContentProvider, а также
0/1, указывающее, является ли контакт членом группы ?
.
Я мог бы, конечно, получить все контакты достаточно легко, затем прокрутить и запросить членство отдельно достаточно легко в моем классе Adapter, но я бы предположил, что выполнение этих двух запросов, поскольку один внешний объединенный запрос даст намного лучшую производительность.
Могу ли я сделать это со стандартным методом строковой проекции высокого уровня и ContentResolver.query()
? Или такой запрос потребует копания в более прямом выполнении SQL?