2013-05-31 3 views
-1

"orders"라는 데이터베이스에서 매일 판매 통계를 생성해야하는데 그 필드 중 하나는 "날짜"(DATETIME)라고합니다.MySQL을 사용하여 일일 통계 생성하기

내 쿼리는 매우 간단합니다 :

SELECT DAY(date) , COUNT(id_order) 
FROM z_view_order_list 
WHERE WEEK(date) = WEEK(NOW()) 
GROUP BY DAY(date) 
LIMIT 7 

문제는 예를 들어 어제 판매가 없었다 경우, 어제는 이 결과에 표시되지 않을 것입니다,하지만 난 그게 0 값으로 표시해야합니다.

실제 결과보기 (주간/판매) : 27/3, 29/4, 30/2 필요한 결과의 예 (일/매출) : 27/3, 28/0, 29/4 , 30/2, 31/0

미리 감사드립니다.

답변

0

모든 날이있는 calendar 테이블을 만들고이 캘린더에서 테이블에 가입하십시오.

하는 방법입니다

은 일정 테이블을 만들려면 다음

이 필드의 이름과 날짜를 사용하지 마십시오 오늘의

http://www.richnetapps.com/using-mysql-generate-daily-sales-reports-filled-gaps/

다음

SELECT Day(c.cal_date), COALESCE(COUNT(z.id_order), 0) 
FROM calendar c 
LEFT JOIN z_view_order_list z ON z.date = c.cal_date 
WHERE WEEK(c.cal_date) = WEEK(NOW()) 
GROUP BY DAY(c.cal_date) 
LIMIT 7 

조언. 날짜는 함수의 유형이며, 혼동을 피하려고 노력합니다 ...

+0

응답 해 주셔서 감사합니다! 고맙게 생각하지만 데이터베이스에 복잡성을 추가하고 싶지는 않습니다. 나는이 방법으로 지난 달 일의 배열을 만들고 배열하여 코드 (PHP)에서 소프트웨어로 해결했습니다 : ($ x = 0; $ x <7; $ x ++) $ arrDays = date ("d" , 시간() - $ x * 86400); 도와 주셔서 감사합니다. – Manuel