1

Android の mediastore データベースには images という名前のテーブルがあり、images テーブルには timetaken という名前の列があり、これはイメージの作成時刻を表し、ミリ秒単位です。

今、私は作成された日(時間ではなく)で画像をグループ化し、毎日の画像を数えたいという要求があるので、次のクエリを試しました:

SELECT datetaken/86400000*86400000 as dateT, count(dateT) as imageSumInDate FROM images WHERE (1 = 1 ) group by (dateT) ORDER BY dateT DESC

残念ながら、エラーが発生します:

android.database.sqlite.SQLiteException: そのような列はありません: dateT (コード 1)

次に、他の人に問題を尋ねると、彼は次のようなサブクエリ スタイルを提供します。

select dateT,COUNT(dateT) as imageSumInDate from (SELECT datetaken/86400000*86400000 as dateT FROM images)t WHERE (1 = 1 ) group by (dateT) ORDER BY dateT DESC

これは正しいかもしれませんが、ContentResolver のクエリ メソッドでこのサブクエリを使用することはできません。ContentResolver は、次のスタイルのクエリのみをサポートする場合があります。

______ が ____ で注文されるテーブルから ____ を選択する

ContentResolver のクエリ スタイルに合わせるのに役立つトリックはありますか?

どんな助けでも本当に感謝します!

4

2 に答える 2

0

これを試して:

SELECT datetaken/86400000*86400000 as dateT, count(datetaken) as imageSumInDate FROM images WHERE (1 = 1 ) GROUP BY (datetaken/86400000*86400000) ORDER BY datetaken/86400000*86400000 DESC

問題は、列の別名が句dateTの範囲内で有効でないことです。エイリアスを使用するのではなく、ORDER BY単に式を繰り返すだけで問題が解決するはずです。dateTdateT

編集dateT:クエリから列エイリアスへのすべての参照を削除しました。(明らかに、私は開始する必要がありました。:)

于 2013-06-27T02:29:40.747 に答える
0

また、ContentResolver のクエリ スタイルに適合するトリックによっても解決されます。

select dateT,COUNT(dateT) as imageSumInDate from (SELECT datetaken/86400000*86400000 as dateT FROM images where (1=1))t group by (dateT) ORDER BY dateT DESC

于 2013-06-27T06:58:35.273 に答える