SQLite
 sql >> Database >  >> RDS >> SQLite

Come posso combinare i dati di due tabelle separate in un unico cursore?

Puoi usare un CursorJoiner per ottenere qualcosa di simile alla fusione di due cursori in uno. Il CursorJoiner non esegue effettivamente un'unione. Mentre si scorre su di esso, sposta i due cursori originali in modo tale che le loro righe corrispondano alle colonne specificate. Questo è il motivo per cui è necessario che entrambi i Cursori siano ordinati sulle colonne da utilizzare nel join.

Link alla documentazione:http://developer.android.com/reference/android/database/CursorJoiner.html

Esempio di codice:

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;

        }
}