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

Форум MySQL

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Выбор из таблицы по запросу только уникальные.
 
 автор: pavluxa09   (16.07.2009 в 09:44)   письмо автору
 
 

Здравствуйте. Вот такая проблема. Я делаю биржу трафика. Мне нужно чтоб с таблицы в которой хранится IP и REFERER выводило REFERER уникальный с количеством переходов. Вобщем так не обьяснить напишу на примере.

Таблица table состоит из: RID - ID пользователя, IP - IP посетителя, REFERER - от куда пришол, Class - тип перехода (хост или хит). В базе пять строк:
1. RID - 1, IP-10.10.10.10, REFERER - http://ya.ru; class - HOST.
2. RID - 1, IP-10.10.10.11, REFERER - http://ya.ru; class - HOST.
3. RID - 1, IP-10.10.10.12, REFERER - http://yаa.ru; class - HOST.
Мне нужно чтоб мне вывело:
http://ya.ru - 2 хоста, 0 хитов.
http://yaa.ru - 1 хост, 0 хитов.

Заранее спасибо

  Ответить  
 
 автор: Valick   (16.07.2009 в 10:17)   письмо автору
 
   для: pavluxa09   (16.07.2009 в 09:44)
 

Поле REFERER у вас содержит http://yаa.ru; class - HOST ? зачем ; class - HOST там?
Или это всё таки отдельное поле? ; сбивает с толку)
Я бы скорее всего сделал отдельные поля для хост и для хит
Тогда запрос можно типа так:

SELECT referer, COUNT(host) AS ho,COUNT(hit) AS hi FROM table ORDER BY referer

Но возможно я ошибаюсь.

  Ответить  
 
 автор: root   (16.07.2009 в 10:18)   письмо автору
 
   для: pavluxa09   (16.07.2009 в 09:44)
 

SELECT referer, COUNT(*) AS cnt FROM tbl_name
GROUP BY referer;

  Ответить  
 
 автор: pavluxa09   (16.07.2009 в 10:26)   письмо автору
 
   для: root   (16.07.2009 в 10:18)
 

О это оно. А как теперь сделать чтоб вывидило ещё с условием. К примеру:
У нас в таблице table есть поля RID,REFERER,CLASS,STATUS
Нужно вывести уникальные REFERER и :
1. Сколько строк с CLASS = HOST
2. Сколько строк с CLASS = HIT
3. Сколько строк с CLASS = HOST и STATUS = NEW
4. Сколько строк с CLASS = HIT и STATUS = NEW

Вот мне друг набросал немного но оно неврено пашет, показывает только один REFERER место всех:
SELECT referer AS ref1, COUNT(*) AS count1, count2 FROM `test`
LEFT JOIN (SELECT referer AS ref2, COUNT(*) AS count2 FROM `test` WHERE class='HIT' GROUP BY ref2) e ON e.ref2 = referer
WHERE class='yes' GROUP BY ref1
Ну токо он тут не добавил условие с STATUS

  Ответить  
 
 автор: root   (16.07.2009 в 10:44)   письмо автору
 
   для: pavluxa09   (16.07.2009 в 10:26)
 

SELECT r.referer, COUNT(*) AS refcnt, hitcnt, hitNewCnt
  FROM `tbl` r
  #class - hit:
  LEFT JOIN (
    SELECT referer, COUNT(*) AS hitcnt
      FROM `tbl`
      WHERE class='hit' GROUP BY referer
    ) e ON e.referer = r.referer
  #class - hit & status new:
  LEFT JOIN (
    SELECT referer, COUNT(*) AS hitNewCnt
      FROM `tbl`
      WHERE class='hit' AND `status` = 'new'
      GROUP BY referer
    ) e2 ON e2.referer = r.referer
GROUP BY ref;

  Ответить  
 
 автор: pavluxa09   (16.07.2009 в 10:52)   письмо автору
 
   для: root   (16.07.2009 в 10:44)
 

УУУУУ. А полегче сделать можно? Если мы выводим Referer и нам нужно посчитать скоко строк с таким referer где STATUS = NEW и где STATUS != NEW?

  Ответить  
 
 автор: Valick   (16.07.2009 в 10:53)   письмо автору
 
   для: pavluxa09   (16.07.2009 в 10:26)
 

Этого:
3. Сколько строк с CLASS = HOST и STATUS = NEW
4. Сколько строк с CLASS = HIT и STATUS = NEW
быть по идее не должно
Новизна должна определяться относительно некоторого промежутка времени.

  Ответить  
 
 автор: pavluxa09   (16.07.2009 в 10:56)   письмо автору
 
   для: Valick   (16.07.2009 в 10:53)
 

Та вот уже сделал.
SELECT `referer` , COUNT(*) AS count FROM `qop_iframepay` WHERE `rid` = '".$user['id']."' GROUP BY `referer` LIMIT 0 , 10;
Нужно токо сделать чтоб выводилось не только общее количество а ещё чтоб было количество где status = 'NEW'

Вот я придумал как токо нада по синтаксису
SELECT `referer` , COUNT(WHERE `status` = 'NEW') AS count, COUNT(WHERE `status` !='NEW') as count2 FROM `qop_iframepay` WHERE `rid` = '".$user['id']."' GROUP BY `referer` LIMIT 0 , 10;
Вот чёта типа такого токо я не знаю как оно по синтаксису.

Скажите как это сделать по синтаксису пожалуйста

  Ответить  
Rambler's Top100
вверх

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