посмотрите на этот запрос:
SELECT DATE(datetime), COUNT(1) as numVisits
FROM ".table_stats."
WHERE type='profile_visit'
AND user_url = '".$_GET['ref']."'
AND id_user='".$_SESSION['user_code']."'
GROUP BY DATE(DATE_SUB(datetime, INTERVAL 1 DAY))
Этот запрос подсчитывает, сколько раз type равен 'profile_visit' на каждую дату, в результате он дает мне две строки (DATE (datetime), numVisits). Это снимок экрана таблицы table_stats:
Table_Stats
Хорошо, до сих пор вы можете понять, что каждый раз, когда пользователь заходит на сайт, в таблицу добавляется новый элемент с type = profile_visit и datetime с датой. и время посещения, поэтому я использую GROUP BY DATE (datetime) для подсчета общего количества посещений за день.
Здесь идет сложная часть, когда поле type равно 'click', а origin равно 'imp', что означает, что пользователь нажимает определенную кнопку на странице. , я хотел бы знать, сколько раз была нажата эта кнопка (независимо от ip) за день, так же, как я делал это при посещениях профиля.
Я могу сделать два запроса, один, чтобы узнать общее количество посещений (как и предыдущий), и другой аналогичный, просто сгруппировав по datetime , когда type is 'click' и origin is 'imp'.
Проблема в том, что я хотел бы сделать это всего за один вызов, чтобы подсчитать общее количество посещений по дате в строке NumVisits, как я делал ранее, и вызов новой строки NumClick с общим количеством сделанных кликов. Вот почему я не хочу больше вычислений на моем php-сервере, если это возможно, будет здорово сделать все вычисления на сервере sql.
Итак, наконец, если вы вызовете этот запрос к таблице:
SELECT DATE( DATETIME ) , COUNT( 1 ) AS numVisits
FROM stats_ram
WHERE TYPE = 'profile_visit'
AND user_url = 'xxx'
AND id_user = '88e91'
GROUP BY DATE( DATE_SUB( DATETIME, INTERVAL 1
DAY ) )
LIMIT 0 , 30
Вы получите:
DATE(datetime) numVisits
2011-11-16 7
Как я могу добавить еще одну строку с итоговым типом = click И origin = imp, сделанный DATE (datetime) ???
Спасибо за любую помощь !!!