У меня 2 таблицы: members
и posts
Подсчет количества поста и общая для каждого пользователя, как в диапазоне времени в MySQL
В таблице members
, я USERID
для каждого пользователя. В таблице posts
у меня есть PID
за каждое сообщение и USERID
от пользователя, создавшего сообщение. В каждом посте также есть number_of_like
, указывая, сколько раз сообщение понравилось.
/*Table: posts*/
----------------
Field Type Null Key Default Extra
----------------- ---------------- ------ ------ ---------- --------------
PID bigint(20) NO PRI (NULL) auto_increment
USERID bigint(20) NO 0
number_of_like int(10) unsigned YES 0
number_of_comment int(10) unsigned YES 0
date_added date NO 0000-00-00
Теперь я хочу, чтобы подсчитать, что: в диапазоне времени (DATE(date_added) > CURDATE() - INTERVAL 30 DAY)
, каждый пользователь имеет сколько постов и в общей сложности, как из них. Я считаю месяц и неделю.
Могу ли я сделать это непосредственно в запросе? Или я должен использовать foreach для подсчета для каждого пользователя, записать его в таблицу stats
, а затем SELECT от stats
при необходимости?
Любая помощь действительно оценена. Спасибо :)
UPDATE
Мне нужно перечислить всех пользователей, независимо от количества их пост.
Почему вы используете DATE_ADD с отрицательным INTERVAL вместо DATE_SUB? – Tarzan
Я уже говорил, что здесь могут быть использованы и другие функции даты. Выбор между «DATE_ADD» или «DATE_SUB» на самом деле не имеет большого значения, это скорее вопрос стилистического вкуса. Я лично считаю, что +/- легче читать, так как вы должны использовать их в арифметическом контексте везде. – Bjoern
Спасибо за ваш быстрый ответ. Я пробовал этот запрос раньше, но этот список перечисляет только тех пользователей, которые на самом деле отправили хотя бы 1 сообщение (поэтому их USERID существует в табличных сообщениях). Мне нужно указать ВСЕ пользователей, если у них нет почты, post_count будет 0 ^^. Нужно ли нам здесь присоединиться? –