2012-09-09 1 views
4

J'utilise la méthode de requête de SQLiteDatabase. J'ai besoin d'aide avec le paramètre orderBy de cette méthode.Multiple OrderBy dans SQLiteDatabase.Query Méthode

Cursor cursor = sqLiteDatabase.query(tableName, tableColumns, whereClause, whereArgs, groupBy, having, orderBy);

public Cursor getAllCustomexp(int TID) throws SQLException 
{ 
    Cursor mCursor = 
      db.query(false, CEXP_TABLE, new String[] {KEY_CEID, FLD_CETID, FLD_CEEID, FLD_CEMID, 
      FLD_CEAMT, FLD_CESEL}, FLD_CETID + " = " + TID, null, 
      null, null, FLD_CEEID, null); 
    if (mCursor != null) { 
     mCursor.moveToFirst(); 
    } 
    return mCursor; 
} 

Question 1: Dans la requête au-dessus du jeu de résultats seront triés par FLD_CEEID en ordre ascendant ou descendant?

Question 2: Si j'ai besoin de commander le jeu de résultats d'abord par FLD_CEEID puis par FLD_CEMID comment dois-je construire l'ordre par paramètre de cette requête.

Est-il possible de faire plusieurs commandes en utilisant cette méthode?

Répondre

5

De SQLite docs:

Si une instruction SELECT qui retourne plus d'une ligne ne dispose pas d'une clause ORDER BY, l'ordre dans lequel les lignes sont renvoyées est non défini. Ou, si une instruction SELECT a une clause ORDER BY, , la liste des expressions attachées à ORDER BY détermine l'ordre dans lequel les lignes sont renvoyées à l'utilisateur. Les lignes sont d'abord triées en fonction des résultats de l'évaluation de l'expression la plus à gauche dans la liste ORDER BY de , puis les liens sont rompus en évaluant la deuxième expression la plus à gauche, , et ainsi de suite. L'ordre dans lequel deux lignes pour lesquelles toutes les expressions ORDER BY évaluent des valeurs égales sont renvoyées est indéfini. Chaque expression ORDER BY peut éventuellement être suivie par l'un des mots-clés ASC (les plus petites valeurs sont renvoyées en premier) ou DESC (les plus grandes valeurs sont renvoyées en premier). Si ni ASC ni DESC ne sont spécifiés, les lignes sont triées par ordre croissant (plus petites valeurs en premier) par défaut.

Réponse 1: Le jeu de résultats sera trié dans l'ordre croissant.

Réponse 2:

String orderBy = FLD_CEEID + " ASC, " + FLD_CEMID + " ASC"; 
db.query(false, CEXP_TABLE, new String[] {KEY_CEID, FLD_CETID, FLD_CEEID, FLD_CEMID, 
     FLD_CEAMT, FLD_CESEL}, FLD_CETID + " = " + TID, null, 
     null, null, orderBy, null); 
+0

merci !! biegleux –

Questions connexes