2014-02-17 4 views
2

지난 7 일 동안 "많이 본 제품보기"를 표시하려고합니다.타임 스탬프에서 날짜 범위는 어떻게 받습니까?

내 데이터베이스 product_views이며 다음 세 필드가 있습니다

product_id, IP, ViewStamp

스탬프 유형이 timestamp이며, 기본값은 CURRENT_TIMESTAMP입니다. 따라서 형식은 다음과 같습니다. 2014-02-02 22:24:54.

일정 기간 동안 가장 많은 행/수를 갖는 product_id을 어떻게 그룹화합니까? 원격으로도이 쿼리를 얻을 수없는 것 같습니다.

도움 주셔서 감사합니다. 나는 이것을 올바르게 설명하기를 바랍니다. 당신이 그 범위에 대한 최대 수를 가지고있는 제품 ID를 제공

+0

사용하고있는 SQL 엔진? 무엇이든 보여주세요. – Mark

+0

sqlfiddle을 설정하면 사람들을 돕기가 더 쉬워 질 것입니다. 저는 여러분이 GROUP BY product_id ViewStamp BETWEEN XXXX와 XXXX를 찾고 있다고 생각하지만 어떤 sql 서버를 자세히 설명하지 않은 것 같습니다 나는 그것을 확인할 수 없다. 비 기능적 메모에서는 일반적으로 밑줄이있는 열의 일관된 이름 지정 규칙을 유지하는 것이 좋습니다. 단어 캐시 테이션 – Anigel

+1

죄송합니다. 새로운 점은 무엇입니까? 이 phpMyAdmin을 말하는 것입니다 : 서버 : UNIX 소켓 서버 유형을 통해 로컬 호스트 : MySQL의 서버 버전 : 5.1.72-CLL - MySQL의 커뮤니티 서버 (GPLv2에) 프로토콜 버전 : 10 사용자 : 루트 @ localhost를 서버 문자셋 : UTF- 8 유니 코드 (UTF8) 웹 서버 cpsrvd 11.40.1.11 데이터베이스 클라이언트 버전 : libmysql - 5.0.96 PHP 확장 : 당신의 도움에 대한 – Mike

답변

0
SELECT product_id, COUNT(1) as c 
FROM product_views 
WHERE ViewStamp BETWEEN '2014-02-02 22:24:54' AND '2014-10-02 22:24:54' 
GROUP BY product_id 
ORDER BY c DESC 
LIMIT 1 

편집 :

그것이 가능 입력하는 대신 최근 7 일을 표시하는 SQL을 물어 수동으로 실제 범위에서?

SELECT product_id, COUNT(1) as c 
FROM product_views 
WHERE DATEDIFF(NOW(), ViewStamp) <= 7 
GROUP BY product_id 
ORDER BY c DESC 
LIMIT 1 
+0

정말 감사합니다 mysqli 문서. 수동으로 실제 범위를 입력하는 대신 지난 7 일을 표시하도록 SQL에 요청할 수 있습니까? – Mike

+0

예, 편집을 참조하십시오 –

+0

고마워, Hanky! 첫 번째 쿼리가 작동했습니다. 두 번째 것은 잘못된 인수를 반환했습니다. 이것은 나를위한 좋은 출발이다. 고마워. – Mike

관련 문제