sql >> Base de Datos >  >> RDS >> SQLite

¿Cómo combino datos de dos tablas separadas en un solo Cursor?

Puede usar un CursorJoiner para obtener algo similar a fusionar dos Cursores en uno. El CursorJoiner en realidad no realiza una combinación. A medida que itera sobre él, mueve los dos cursores originales de modo que sus filas coincidan en las columnas especificadas. Por eso es necesario que ambos Cursores estén ordenados en las columnas que se utilizarán en la combinación.

Enlace a la documentación:http://developer.android.com/reference/android/database/CursorJoiner.html

Ejemplo de código:

CursorJoiner joiner = new CursorJoiner(userCursor, new String[]{ "user_id" }, postCursor, new String[] {"user_id"});

while (joiner.hasNext()) {
    CursorJoiner.Result result = joiner.next();
        switch (result) {
            case LEFT:
                // don't care about this case
                break;

            case RIGHT:
                // nor this case
                break;

            case BOTH:
                // here both original Cursors are pointing at rows that have the same user_id, so we can extract values
                int postId = postCursor.getInt(...);
                String headline = postCursor.getString(...);
                int userId = userCursor.getInt(...);        
                String userName = userCursor.getString(...);

                // do something with above values

                break;

        }
}