SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Como combino dados de duas tabelas separadas em um único cursor?


Você pode usar um CursorJoiner para obter algo semelhante a mesclar dois cursores em um. O CursorJoiner na verdade não executa uma mesclagem. À medida que você itera sobre ele, ele move os dois cursores originais de forma que suas linhas correspondam às colunas especificadas. É por isso que é necessário que ambos os cursores sejam classificados nas colunas que serão usadas na junção.

Link para a documentação:http://developer.android.com/reference/android/database/CursorJoiner.html

Exemplo 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;

        }
}