Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
agat 21.01.2007 10:47
Вопрос №1CREATE TABLE `site_statistics` ( `id` int(11) NOT NULL auto_increment, # поле содержит дату учета `dt_counted` date default NULL, # номер новости - если номер = 0, то это учет посещений сайта за дату `article_id` int(11) unsigned default '0', # количество прочтений новости(посещений сайта если article_id = 0) `read_count` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `dt_counted` (`dt_counted`,`article_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;Таблица собирает статистику по прочитанным новостям и уникальным посещениям сайта. Прочли новость, смотрим в таблицу - если ее уже сегодня читали - инкрементим счетчик read_count, если не читали - добавляем запись. Счетчик посещений сайта работает также, но только с article_id = 0.
SELECT T1.dt_counted, T1.read_count AS site, COUNT(T2.read_count) as article, SUM(T2.read_count) AS total_read FROM site_statistics AS T1 LEFT JOIN site_statistics AS T2 ON T1.dt_counted = T2.dt_counted AND T1.article_id = 0 AND T2.article_id != 0 GROUP BY T1.dt_counted ORDER BY T1.dt_countedЗапрос работает. Проверил его на эксплеин - вроде все путем.
FOUND_ROWS()Испробовал
Returns the number of rows that the last SELECT SQL_CALC_FOUND_ROWS ... command would have returned
SELECT SQL_CALC_FOUND_ROWS T1.dt_counted, T1.read_count AS site, COUNT(T2.read_count) as article, SUM(T2.read_count) AS total_read FROM site_statistics AS T1 LEFT JOIN site_statistics AS T2 ON T1.dt_counted = T2.dt_counted AND T1.article_id = 0 AND T2.article_id != 0 GROUP BY T1.dt_counted ORDER BY T1.dt_counted; SELECT FOUND_ROWS()Работает. Но ведь это не вариант? А если до последнего запроса SELECT FOUND_ROWS() другой юзер вызовет запрос с SQL_CALC_FOUND_ROWS?
$hVariable.iVariable # или $tVariable.sVariableсмотрится не по-парсеровски, ведь поля, к примеру, объекта класса $file пишутся как $file.text и т.д. А хочется иметь определенный стандарт. Как быть?