2010-07-19 3 views
23

J'essaie de trouver la meilleure façon de faire une simple table join sur mes deux tables en utilisant une base de données sqlite dans une application android. Est le moyen le plus simple d'utiliser CursorJoiner ou est-il un moyen plus facile?Meilleur moyen de joindre des tables en utilisant sqlite dans android

+0

Mieux vaut le faire en SQL. Créez un [VIEW] (http://www.sqlite.org/lang_createview.html) avec les [JOIN] (http://www.sqlite.org/lang_select.html) nécessaires. – yanchenko

+0

J'ai essayé de le faire mais j'ai eu des problèmes pour que mon projet le reconnaisse pour une raison quelconque. –

+1

http://stackoverflow.com/a/4957197/334270 –

Répondre

27

Dans la mise en œuvre de SQLiteDatabase et SQLiteQueryBuilder vous verrez qu'il est possible de passer les tables que vous souhaitez rejoindre à l'argument table de query même si la documentation, il ne prendra un seul nom d'une table. La documentation pour SQLiteQueryBuilder est plus claire et suggère même des choses comme foo, bar ou foo LEFT OUTER JOIN bar ON (foo.id = bar.foo_id).

+2

les liens sont brisés – ytg

1

Si vous êtes prêt à utiliser une bibliothèque tierce, je recommande l'utilisation d'Active Android

https://github.com/pardom/ActiveAndroid

l'utiliser, vous pouvez fusionner des tables comme ce

From query = new Select() 
    .from(Foo.class) 
    .innerJoin(Bar.class) 
    .on("Foo.Id=Bar.Id"); 

vous pouvez même obtenir un curseur de retour à utiliser dans les chargeurs

Cursor cursor = Cache.openDatabase().rawQuery(query.toSql(), query.getArguments()); 

plus de détails here

Questions connexes