Contexte
J'ai un projet Android qui a une base de données avec deux tables: tbl_question
et tbl_alternative
.
Pour remplir les vues avec des questions et des alternatives, j'utilise des curseurs. Il n'y a aucun problème pour obtenir les données dont j'ai besoin jusqu'à ce que j'essaye 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.`
Voici 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 que cette façon de former des requêtes est plus difficile que le SQL ordinaire, mais j'ai reçu le conseil de l'utiliser car elle est moins sujette aux erreurs.
Question
Comment joindre deux tables SQLite dans mon application?