2

現在、クエリビルダーを使用してデータベースからすべてのレコードを取得していますが、現在は日ごとに整理されていますが、アルファベット順に並べ替えています。

  public Cursor fetchAll() {

      return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_MODULECODE,
        KEY_DAY, KEY_TIME, KEY_DURATION, KEY_TYPE, KEY_ROOM},null, null, null, null,"Day");
   }    

グーグルで検索した結果、最後のセクションをカスタム検索順序に置き換える必要があることがわかりました。次の行に沿った何か:

 select _id, busnum, 
    case cast (strftime('%w', servdate) as integer)
        when 0 then 'Sunday'
        when 1 then 'Monday'
        when 2 then 'Tuesday'
        when 3 then 'Wednesday'
        when 4 then 'Thursday'
         when 5 then 'Friday'
        else 'Saturday' end as servdayofweek
   from tb1
   where ...

   From:
   http://stackoverflow.com/questions/4319302/sqlite-return-as-day-of-week

これまでのところ、この 2 つを組み合わせる方法を理解することができず、正しい方向への助けは非常に惜しまれます。

解決策を編集してください。文字列を宣言し、簡単なものが必要な人のためにクエリでそれにリンクするのを助けてくれてありがとう、これが私の最終的なコードです

public Cursor fetchAll() {
   String OrderBy ="case Day"+
      " when 'Monday' then 0 "+ 
      " when 'Tuesday' then 1"+
      " when 'Wednesday' then 2"+
      " when 'Thursday' then 3"+
      " when 'Friday' then 5"+
      " end";
 return mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID, KEY_MODULECODE,
        KEY_DAY, KEY_TIME, KEY_DURATION, KEY_TYPE, KEY_ROOM},null, null, null, null,OrderBy );
}    
4

2 に答える 2

1

複雑なクエリを渡す方法がわからない場合はSQLiteDatabase.query(... lots of variables...)、select ステートメントを .xml を使用して文字列として渡しますSQLiteDatabase.rawQuery()

例えば:

String query = "select _id, busnum, " +
               " case cast cast (strftime('%w', servdate) as integer) " +
               ...
String[] selectionArgs = new String() { yada, yada, yada }
mDb.rawQuery(query, selectionArgs);
于 2012-05-02T01:24:17.090 に答える
1

Day値が曜日の場合、次のようなものが必要です。

order by case Day
        when 'Sunday' then 0
        when 'Monday' then 1
        when 'Tuesday' then 2
        ...
        when 'Saturday' then 6
    end

SQLで; SQL ORDER BY はほとんどすべての式を渡すことができることに注意してください。へのorderBy引数queryは、任意の SQL ORDER BY 句 (を除くorder by) にすることができるため、この大きな醜い文字列が必要です。

"case Day when 'Sunday' then 0 when 'Monday' then 1 ... when 'Saturday' then 6 end"

への最後の引数としてquery...コースを適切に記入する必要があります。

于 2012-05-02T01:27:00.203 に答える