2014-02-17 5 views
2

Я пытаюсь отобразить «Самые просматриваемые товары» за последние 7 дней.Как получить диапазон дат от временных меток?

Моя база данных product_views и имеет следующие 3 поля:

product_id, IP, ViewStamp

Тип штемпель timestamp и по умолчанию CURRENT_TIMESTAMP. Поэтому они отформатированы так: 2014-02-02 22:24:54.

Как сменить группу product_id, которая имеет наибольшее количество строк/количество экземпляров за заданный интервал дней? Кажется, я не могу получить этот запрос даже удаленно.

Благодарим за помощь. Надеюсь, я объяснил это правильно.

+0

Что SQL двигателя вы используете? Показать что-нибудь, что угодно .. – Mark

+0

Если вы настроите sqlfiddle, вам будет проще помочь вам, я думаю, вы ищете «GROUP BY product_id HAVING ViewStamp BETWEEN XXXX AND XXXX», но без подробностей о том, какой сервер sql и т. Д. Я не могу это подтвердить. В случае нефункциональной заметки, как правило, имеет смысл придерживаться согласованного соглашения об именах для ваших столбцов символов подчеркивания между словами или WordCapitalisation. – Anigel

+1

К сожалению, я новичок в этом. Это то, что говорит PhpMyAdmin: Сервер: Localhost через UNIX сокет Тип сервера: MySQL версии сервера: 5.1.72-ХЛЛ - MySQL Community Server (GPLv2) версия Протокол: 10 Пользователь: корень @ локальный сервер кодировок: UTF- 8 Unicode (utf8) веб-сервер версии клиента cpsrvd 11.40.1.11 База данных: libmysql - 5.0.96 PHP расширение: MySQLi Документация – 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 

Это дает вам идентификатор продукта, который имеет максимальное количество для этого диапазона

Edit:

Можно ли задать SQL, чтобы отобразить последние 7 дней вместо ввода в реальном диапазоне вручную?

Да

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

большое спасибо за вашу помощь. Можно ли запросить SQL, чтобы отображать последние 7 дней, а не вручную вводить вручную? – Mike

+0

Да, см. Редактирование –

+0

Большое спасибо, Хэнки! Первый запрос сработал. Второй возвращает неверный аргумент. Это отличное начало для меня, спасибо. – Mike

Смежные вопросы