2012-09-02 2 views
0

SQL 요청에서 이상한 동작이 발생합니다.날짜, 카운트 (날짜)에 따른 이상한 SQL 결과 순서

내 테이블 pointLog :

# Column Type
1 date timestamp 2 uid varchar(30)
3 ssid varchar(40)
4 reason varchar(50)
5 points int(5) No None

문 :

SELECT date, count(date) as anzahl FROM pointLog WHERE uid = 1 order by date desc 

반환 다음과 같은 결과

date    anzahl 
2012-09-01 12:21:16  14 

그러나 문 :

,

반환 첫 번째 결과로

2012-09-02 12:44:08 

.

그래서 내 질문 : 왜 2012-09-02이 첫 번째 결과에 카운트를 포함하는 첫 번째 결과가 표시되지 않습니까 ??

고마워요!

편집 anzahl로서 카운트 ATM 만이 예에서 0보다 항목이 있는지를 확인하기 위해 사용된다. 나는 그것이 그 프로그램에서 시험되어야한다는 것을 안다.

하지만 내 주요 문제는 설명 할 수 없다는 것입니다. 이유는 동일한 날짜로 정렬 할 때 2 개의 다른 날짜가 표시되는 이유입니다. 따라서 유일한 차이점은 count 속성입니다. 그러나 그것은 일반적으로 정렬을 변경해서는 안됩니다?

FINAL * 솔루션

SELECT MAX(date) AS maxdate, COUNT(date) AS anzahl FROM pointLog WHERE uid = 1 
+0

당신은 당신이 그것에 의해 그룹화되지 않기 때문에 당신이 날짜 열을 선택할 수 없습니다 오류 메시지가 표시됩니다. 당신이하고있는 정확한 것을 게시하고 있습니까? – erikkallen

+0

예 문을 정확히 사용하고 있습니다. – TheBassMan

+0

완료! 그 솔루션은 서브 쿼리보다 훨씬 뛰어나 MAX 솔루션을 완전히 무시했습니다. – TheBassMan

답변

0

@prosfilaes가 대답 했으므로 쿼리가 결정적 결과를 반환하지 않으므로 date이 임의의 결과로 반환됩니다.

최신 날짜와 수를 원한다면, 당신은 사용할 수 있습니다

SELECT 
    MAX(date) AS maxdate, 
    COUNT(date) AS anzahl 
FROM 
    pointLog 
WHERE 
    uid = 1 ; 
+0

고맙습니다 thats the solution;) – TheBassMan

0

당신이 (당신의 SQL 문에 그렇지 않으면 COUNT를 그룹에 의해 필요는) 각 날짜에 대해 별도의 합계를 제공하지 않습니다.

1

결과가 하나 있습니다. 날짜 수에 임의의 날짜가옵니다. ORDER BY 문은 그 순서를 지정합니다. 한 줄의 출력 만 있기 때문에 아무 작업도하지 않습니다.

+0

OK 그러면 반환되는 결과 날짜가 결정적이지 않습니까? 데이터베이스의 모든 날짜에 총 항목 수가 포함 된 최신 항목을 어떻게 얻을 수 있습니까? 나는 그것을 위해 2 가지의 요청을해야합니까, 아니면 둘 다 결합 할 수 있습니까? – TheBassMan