错误的cursor.getColumnIndex在LEFT JOIN查询上重新调整

时间:2012-09-23 14:53:51

标签: android android-contentprovider android-sqlite

我的LEFT JOIN

中有一个ContentProvider的查询语句

左表是帖子,它有一个post_id列,右表是标签,它有一个post_id列,我正在做posts left join taggings on posts.post_id=taggings.post_id

查询ContentProvider时,如果taggings表中没有匹配的行,由于某种原因,cursor.getColumnIndex("post_id")的返回值是错误的,id的int值始终为0。

如果标记中有匹配的行,则一切都按预期工作。

我在这里错过了什么?

ContentProvider查询:

case POSTS:
        qb.setTables(MetaData.TABLE_POSTS

                + " LEFT JOIN " + MetaData.TABLE_TAGGINGS + " ON "
                + MetaData.TABLE_POSTS + "." + MetaData.COLUMN_POST_ID
                + "=" + MetaData.TABLE_TAGGINGS + "." + MetaData.COLUMN_POST_ID
                );
        break;

游标查询语句:

Cursor cursor = context.getContentResolver().query(MetaData.POSTS_URI, 
            null, null, 
            null, MetaData.TABLE_POSTS + "." + MetaData.COLUMN_POST_ID + " DESC");

1 个答案:

答案 0 :(得分:0)

我通过使用setProjectionMap()MetaData.COLUMN_POST_ID映射到MetaData.TABLE_POSTS + "," + MetaData.COLUMN_POST_ID

来解决这个问题