SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Wie kombiniere ich Daten aus zwei separaten Tabellen in einem einzigen Cursor?

Sie können einen CursorJoiner verwenden, um etwas Ähnliches wie das Zusammenführen von zwei Cursorn zu einem zu erhalten. Der CursorJoiner führt nicht wirklich eine Zusammenführung durch. Wenn Sie darüber iterieren, werden die ursprünglichen zwei Cursors so verschoben, dass ihre Zeilen mit den angegebenen Spalten übereinstimmen. Aus diesem Grund ist es notwendig, dass beide Cursor nach den Spalten sortiert werden, die im Join verwendet werden sollen.

Link zur Dokumentation:http://developer.android.com/reference/android/database/CursorJoiner.html

Codebeispiel:

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;

        }
}