2012-09-23 2 views
0

j'ai une instruction de requête avec un LEFT JOIN dans mon ContentProvidermal cursor.getColumnIndex recalibrée sur LEFT JOIN requête

la table gauche messages et il a une colonne post_id, la bonne table est des marquages ​​qu'il il a une colonne post_id ainsi et je fais posts left join taggings on posts.post_id=taggings.post_id

lors de l'interrogation du ContentProvider, s'il n'y a pas de ligne correspondante dans la table des marquages, pour une raison quelconque la valeur renvoyée par cursor.getColumnIndex("post_id") est erronée et la valeur int de l'identifiant est toujours 0.

s'il y a rangée de marqueurs dans les marquages, tout fonctionne comme prévu.

Que manque-t-il ici?

requête 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; 

instruction de requête du curseur:

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

Répondre

0

je fixe à l'aide setProjectionMap() à la carte MetaData.COLUMN_POST_ID à MetaData.TABLE_POSTS + "," + MetaData.COLUMN_POST_ID