Arrière-plan
J'ai un projet Android qui dispose d'une base de données avec deux tableaux: tbl_question
et tbl_alternative
.
Pour remplir les vues avec des questions et des solutions de rechange, je suis en utilisant les curseurs. Il n'y a pas de difficultés à obtenir les données dont j'ai besoin jusqu'à ce que j'essaie de joindre les deux tables.
Tbl_question ------------- _id question categoryid
Tbl_alternative --------------- _id questionid categoryid alternative
Je veux quelque chose comme ce qui suit:
SELECT tbl_question.question, tbl_alternative.alternative where
categoryid=tbl_alternative.categoryid AND tbl_question._id =
tbl_alternative.questionid.`
C'est ma tentative:
public Cursor getAlternative(long categoryid) {
String[] columns = new String[] { KEY_Q_ID, KEY_IMAGE, KEY_QUESTION, KEY_ALT, KEY_QID};
String whereClause = KEY_CATEGORYID + "=" + categoryid +" AND "+ KEY_Q_ID +"="+ KEY_QID;
Cursor cursor = mDb.query(true, DBTABLE_QUESTION + " INNER JOIN "+ DBTABLE_ALTERNATIVE, columns, whereClause, null, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
}
return cursor;
Je trouve cette façon de créer des requêtes plus dur que le standard SQL, mais ont obtenu les conseils d'utilisation de cette façon car il est moins sujette aux erreurs.
Question
Comment puis-je joindre deux tables SQLite dans mon application?