0

にを含むクエリステートメントがありLEFT JOINますContentProvider

左側のテーブルはpostsであり、post_id列があり、右側のテーブルはタグ付けされており、post_id列もあります。posts left join taggings on posts.post_id=taggings.post_id

をクエリするときContentProviderに、タグ付けテーブルに一致する行がない場合、何らかの理由でfromの戻り値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");
4

1 に答える 1

0

setProjectionMap()を使用してマップMetaData.COLUMN_POST_IDすることで修正しましたMetaData.TABLE_POSTS + "," + MetaData.COLUMN_POST_ID

于 2012-09-26T12:46:14.020 に答える