|
|
|
| Здравствуйте. Вот такая проблема. Я делаю биржу трафика. Мне нужно чтоб с таблицы в которой хранится 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 хитов.
Заранее спасибо | |
|
|
|
|
|
|
|
для: 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
|
Но возможно я ошибаюсь. | |
|
|
|
|
|
|
|
для: pavluxa09
(16.07.2009 в 09:44)
| |
SELECT referer, COUNT(*) AS cnt FROM tbl_name
GROUP BY referer;
|
| |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: 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;
|
| |
|
|
|
|
|
|
|
для: root
(16.07.2009 в 10:44)
| | УУУУУ. А полегче сделать можно? Если мы выводим Referer и нам нужно посчитать скоко строк с таким referer где STATUS = NEW и где STATUS != NEW? | |
|
|
|
|
|
|
|
для: pavluxa09
(16.07.2009 в 10:26)
| | Этого:
3. Сколько строк с CLASS = HOST и STATUS = NEW
4. Сколько строк с CLASS = HIT и STATUS = NEW
быть по идее не должно
Новизна должна определяться относительно некоторого промежутка времени. | |
|
|
|
|
|
|
|
для: 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;
Вот чёта типа такого токо я не знаю как оно по синтаксису.
Скажите как это сделать по синтаксису пожалуйста | |
|
|
|