Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Количество просмотров и посещений в день

Сообщения:  [1-5] 

 
 автор: dimaxz   (11.03.2011 в 12:00)   письмо автору
 
   для: cheops   (11.03.2011 в 11:51)
 

ухты диствительно то что надо! спасибо!

  Ответить  
 
 автор: cheops   (11.03.2011 в 11:51)   письмо автору
 
   для: dimaxz   (11.03.2011 в 11:36)
 

Можно поступить следующим образом
SELECT
   hit.date AS `date`,
   hit.users_count AS hits,
   host.users_count AS hosts
FROM
   (SELECT 
        DATE(`datetime`) AS `date`, 
        COUNT(DISTINCT user_id) AS users_count 
    FROM pz_event 
    WHERE `type`=1 
    GROUP BY `date`) AS `hit`
LEFT JOIN
   (SELECT 
        DATE(`datetime`) AS `date`, 
        COUNT(DISTINCT user_id) AS users_count 
    FROM pz_event 
    WHERE `type`=3 
    GROUP BY `date`) AS `host`
ON (hit.date = host.date)

  Ответить  
 
 автор: dimaxz   (11.03.2011 в 11:36)   письмо автору
 
   для: cheops   (11.03.2011 в 11:23)
 

Таблица:

CREATE TABLE pz_event(
  id INT(11) NOT NULL AUTO_INCREMENT,
  user_id INT(11) DEFAULT NULL,
  `datetime` DATETIME DEFAULT NULL,
  type INT(11) DEFAULT NULL,
  description VARCHAR(255) DEFAULT NULL,
  PRIMARY KEY (id),
  INDEX IX_pz_event_datetime (`datetime`),
  INDEX IX_pz_event_user_id (user_id),
  INDEX UK_pz_event_type (type)
)
ENGINE = MYISAM
AUTO_INCREMENT = 501
AVG_ROW_LENGTH = 77
CHARACTER SET utf8
COLLATE utf8_general_ci;

Данные:

INSERT INTO pz_event VALUES 

 (363, 91, '2011-03-10 08:56:00', 3, NULL),
  (364, 248, '2011-03-10 08:57:00', 1, ''),
  (365, 184, '2011-03-10 09:07:00', 1, ''),
 (384, 184, '2011-03-10 09:26:00', 1, ''),
(408, 56, '2011-03-10 09:54:00', 1, ''),
  (409, 56, '2011-03-10 09:55:00', 3, NULL),
  (410, 173, '2011-03-10 09:56:00', 1, ''),
  (412, 173, '2011-03-10 10:03:00', 1, ''),
  (413, 173, '2011-03-10 10:04:00', 3, NULL),
  (414, 0, '2011-03-10 10:10:00', 3, NULL),
  (415, 173, '2011-03-10 10:10:00', 3, NULL),
  (416, 173, '2011-03-10 10:12:00', 1, ''),
  (417, 184, '2011-03-10 10:17:00', 1, ''),
 (423, 184, '2011-03-10 10:21:00', 3, NULL),
  (424, 184, '2011-03-10 10:21:00', 1, ''),
  (425, 184, '2011-03-10 10:22:00', 3, NULL),
  (426, 4, '2011-03-10 10:23:00', 3, NULL),
  (427, 4, '2011-03-10 10:25:00', 3, NULL),
  (428, 202, '2011-03-10 10:30:00', 1, ''),
 (446, 74, '2011-03-10 14:43:00', 1, ''),
  (447, 87, '2011-03-10 14:45:00', 3, NULL),
  (448, 87, '2011-03-10 14:52:00', 3, NULL),
(466, 123, '2011-03-11 08:36:00', 1, ''),
  (467, 4, '2011-03-11 09:09:00', 3, NULL),
  (468, 4, '2011-03-11 09:15:00', 3, NULL),
  (469, 4, '2011-03-11 09:15:00', 3, NULL),
  (470, 4, '2011-03-11 09:18:00', 3, NULL),
  (471, 119, '2011-03-11 09:27:00', 1, ''),
  (472, 119, '2011-03-11 09:31:00', 3, NULL),
  (476, 184, '2011-03-11 10:19:00', 1, ''),
  (477, 184, '2011-03-11 10:20:00', 3, NULL),
 (496, 260, '2011-03-11 11:22:00', 1, ''),
  (497, 260, '2011-03-11 11:23:00', 3, NULL),
  (498, 260, '2011-03-11 11:24:00', 3, NULL),
  (499, 243, '2011-03-11 11:26:00', 1, ''),
  (500, 260, '2011-03-11 11:27:00', 3, NULL);

  Ответить  
 
 автор: cheops   (11.03.2011 в 11:23)   письмо автору
 
   для: dimaxz   (11.03.2011 в 08:51)
 

Вложенными подзапросами в FROM можно сформировать две таблицы для type = 1 и type = 2 и объединить их при помощи LEFT JOIN.

PS Если составление такого запроса вызывает затруденение, приложите небольшой дамп за пару дней, чтобы можно было воспроизвести ситуацию и отладить запрос.

  Ответить  
 
 автор: dimaxz   (11.03.2011 в 08:51)   письмо автору
 
 

данный запрос выведет даты с количеством посещений в день, посещение type=1
date | users_count
2011-03-01 | 5
2011-03-02 | 7
2011-03-03 | 10
SELECT
        DATE(`datetime`) AS date,
        COUNT(distinct user_id) as users_count
        FROM
        pz_event
          WHERE type=1
        GROUP BY
        date

нельзя ли вывести еще и кол. просмотров определенной страницы (users_count2) которые тоже фиксируеются (type=2) но их может и не быть на определенную дату
date | users_count | users_count2
2011-03-01 | 5 | 0
2011-03-02 | 7 | 3
2011-03-03 | 10 | 2

  Ответить  

Сообщения:  [1-5] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования