2013-06-27 5 views
1

mediastore 데이터베이스에 images라는 테이블이 있고, 이미지 테이블에는 이미지의 생성 시간을 나타내는 timetaken이라는 열이 있습니다. 밀리 초 단위입니다.하나의 선택 쿼리에서 "order by"및 "count()"를 사용하는 방법

은 지금은 내가 만든 일 (시간이 아니라)에 의해 그룹 이미지를 원하는 수요가, 매일의 이미지를 계산, 그래서 나는이 쿼리 시도가 :

이/86400000 * 86400000 등을 datetaken 선택

android.database.sqlite : dateT DESC BY (dateT) ORDER (1 = 1) 그룹

불행하게도, 그것은 오류가 나오는 WHERE dateT는 이미지 로부터 imageSumInDate 로 (dateT)를 계산 .SQLiteException : 해당 열 없음 : dateT (code 에서 imageSumInDate 로

선택 dateT는, COUNT (dateT가) (/ 86400000 * 86400000로 datetaken SELECT : 1)

다음

는 그 문제에 대해 다른 사람에게 물어, 그는 다음과 같이 서브 쿼리 스타일을 제공 이미지에서 dateT) t WHERE (dateT (1 = 1) 그룹) dateT DESC BY ORDER

이 올바른있을 수 있습니다,하지만 난 컨텐트 리졸버 ContentResolver의 쿼리 방법이 하위 쿼리를 사용할 수 없습니다.

select ____ from table where ______ order by____

나를 컨텐트 리졸버의 질의 스타일에 맞게 도움이 어떤 트릭이 있습니까 : 컨텐트 리졸버는이 스타일 같은 쿼리를 지원할 수있다?

도움이 될 것입니다.

답변

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 조항의 범위에서 유효하지 않은 것입니다. dateT 별칭을 사용하는 대신 dateT 표현식을 반복하기 만하면 문제가 해결됩니다.

EDIT : 쿼리에서 dateT 열 별칭에 대한 참조가 모두 제거되었습니다. (어떤 분명히 나는 ​​시작 했어야 :)

+0

귀하의 답변을 주셔서 감사합니다,하지만 여전히 같은 오류가 나옵니다 BY 주문 (1 = 1)) t 그룹 : 그런 없다 column : dateT, dateT와 같은 것 같습니다. 열 별칭은 count 함수의 범위에서 유효하지 않습니다. "count (dateT) as imageSumInDate"를 삭제하면 올바르게 실행됩니다. – AvatarQing

+0

Ah. 문제는'count()'표현식이나'group by' 절이었고'order by'는 아니었다. 내 대답을 업데이트했습니다. 그것을 시도하십시오. – sigpwned

+0

나는 세 가지 대답을 모두 시도했지만, 모두 같은 오류로 나옵니다."count (dateT) as imageSumInDate"를 사용하고 "date datT FROM images where (1 = 1) group by (dateT) ORDER BY dateT DESC"로 SELECT datetaken/86400000 * 86400000을 사용하면 올바르게 실행됩니다. 별칭이있는 "count()"의 범위에는 몇 가지 문제가 있습니다. – AvatarQing

0

또한 컨텐트 리졸버의 질의 스타일에 맞게 속임수에 의해 해결된다이 :.

(에서 imageSumInDate 로 dateT, COUNT (dateT)를 선택 datetaken SELECT/86400000 * 86400000 dateT 같은 이미지 곳 (dateT) dateT DESC