Сумма найденных записей - изврат???

Dimonets

Guest
Сумма найденных записей - изврат???

Привет, всем!!!

Вот пишу потихоньку счетчик типа hotlog-a и сейчас делаю отчет о повторных посещениях. Данные будут выводиться следующим образом - новые посещения, 2-5 возвратов, 6-10 возвратов и тд.

На определение каждого числа решил использовать отдельный селект, дабы не усложнять все, поскольку если будет 5 селектов и каждый из них будет возвращать одну строку с суммой - ничего страшного не произойдет.
С новыми посещениями справился легко. Но вот с повторными посещениями не получается. Решил считать так - если у какого-нибудь пользователя за искомую дату было от 2-х до 5-ти entry_pages то он подходит под наше условие для определения ранга 2-5 возвратов. Сделал вот такой вот запрос:

SELECT visitor_id, ((COUNT(is_entry_page)>=2) AND (COUNT(is_entry_page)<=5)) AS temp_visits_flag FROM transactions WHERE (website_id='2' AND (date>='2003-10-26 00:00:00' AND date<='2003-10-26 23:59:59')) GROUP BY visitor_id HAVING temp_visits_flag=1

Этот запрос работает отлично, НО он возвращает мне Id (visitor_id) всех посетителей, которые соответствуют моему условию, а не сумму посетителей. Конечно, после выполнения $number = MYSQL_NUM_ROWS($result); мы в переменной $number имеем искомое число, но мне кажется, что лучше, если это число будет возвращаться MySQL-ем как единственный результат, а не список соответствующих посетителей, как сейчас...

Помогите как можно просуммировать количество найденных записей. Пытался при помощи переменных типа SUM(@t1:=1) as total_visitors, но это не дает нужного результата - так как суммирует несколько другие вещи из-за того, что мы используем GROUP BY visitor_id.

Зараннее благодарю!
 

tony2001

TeaM PHPClub
1) выбирать эти записи во временную таблицу через CREATE TEMPORARY TABLE SELECT ...; потом считать записи там.
2) насколько я понимаю, это статистика, которая считается на основе реальных данных, поэтому можно сбрасывать ее раз в N минут(секунд) в таблицу типа MERGE и оттуда уже выбирать/считать.
 
Сверху