Busco para realizar la siguiente consulta (en pseudo-código) en Android:¿Puedo realizar esta consulta de Android con ContentResolver.query()? (LEFT JOIN y CASE)
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 = ?
Busco para seleccionar el identificador y el nombre de todos los contactos en la libreta de direcciones del sistema, a través de los Contactos predeterminados ContentProvider, junto con un campo 0/1 que indica si el contacto es miembro del grupo ?
.
Pude, por supuesto, obtener todos los contactos con bastante facilidad, luego recorrer y consultar la membresía por separado de manera sencilla en mi clase de Adaptador, pero me imagino que realizar las dos consultas como una consulta externa generaría un rendimiento mucho mejor.
¿Puedo hacer esto con el método estándar de proyección de cuerdas de alto nivel y el método ContentResolver.query()
? ¿O este tipo de consulta requeriría profundizar en una ejecución SQL más directa?
Al buscar, me da la impresión de que no puede usar SQLLiteDatabase para consultar otras aplicaciones ... en mi caso, el URL de CONTACTS, pero solo para consultar sus propios almacenes de datos. ¿Es esto correcto? En cuyo caso, supongo que me quedaría bloqueado la realización de subconsultas en mi clase de Adaptador al vincular mi actividad. – eidylon
@eidylon: No sabía que estabas consultando los Contactos db. Sí, tienes razón :( – Macarse
Drat! Oh bien ... en adelante y en adelante! Gracias! – eidylon