私は、id、pdate、pvalue1、pvalue2という列のデータベースを持っています。まず、私はカーソルでの問合せを行います。Sqliteでこのクエリをどのように行うべきですか?
Cursor c = ourDatabase.query(DATABASE_TABLE, new String[] { "_id","pdate","pvalue1","pvalue2"},
"pdate >= ? AND pdate <= ?", new String[] { datefrom, dateto }, null, null, null);
これは、例えば、私にいくつかの行を与える場合pdate = 20120318、その後、pvalue1 = 58、pvalue2 = 29。これらは文字列なので、pvalue2に "XX"の値を与えることができます。私は指定されたdatefromとdatetoの間のpvalue1を合計し、pvalue2 = XXの場合はpdateでグループ化したいと思います。私の問題は、私は他のデータも必要としているので、私はこの条件をクエリーに入れることができないということです( "pvalue2 = XX"のように働いています)。
if (c.moveToFirst())
{
do{
if (c.getString(3).equals("XX")){
Log.i("XX", c.getString(1) + " " + c.getString(2)) + " " + c.getString(3));
}
else {
Log.i("NotXX", c.getString(1) + " " + c.getString(2)) + " " + c.getString(3));
}
while (c.moveToNext());
}
}
それは今のところ大丈夫ですので、私はこの場所pvalue2 = XXで件のデータを記録し、NotXXと、このような何かを得ることができます。20120317,48,29 (pdate、pvalue1、pvalue2を); --- ---; 20120317,21,54; ------- 20120317,11、XX; ----- 20120318,79,71; ------- 20120318,21、XX;
私は何をしたいですか?
最初に、pdateによって合計(pvalue1)をグループ化し、pvalue2がXXまたはnotXXの場合はそれを示します。したがって、 20120317、NotXX、69(48 + 21 = 69以降) - 20120317、XX、11 -------- 20120318、NotXX、79 -------- 20120318、XX、21
これ以降、NotXX合計からXX合計を差し引いて毎日。取得したい: 20120317,58(since 69-11)------- 20120318,58(since 79-21)
どうすればよいですか? ありがとうございます!
他にも多くのクエリが含まれていますか?私のプロジェクトではそれは問題ではありません。たとえば、私は使用することができます:new String [] {"_id"、 "pdate"、 "sum(pvalue1)"、}、 \t \t \t \t \t "pdate> =?AND pdate <=?"、new String [] {datefrom、dateto}、 "pdate"、null、null);これは毎日pvalue1の合計を私に与えます。しかし、XXとNotxxの値を分けなければならないので、私はこれを使用できません。 –
はい、 'selection'引数の'? 'は' selectionArgs'でそれらを指定すると機能しますが、 '?'を 'projection'に入れることを意味します。それは動作するかもしれませんが、私はそれがないと信じています。必要とする[prepared statement](http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#compileStatement%28java.lang.String%29)probaly – zapl
'db.query(" table "、新しいString [] {"_id"、 "sum(テーブルからどこからpdate>?)を集計として選択する"}、 "pdate> =?AND pdate <=?"、new String [] { */datefrom、dateto}、null、null、null);それは私が意味することです – zapl