• UAH
  • USD
  • RUB
  • EUR
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепропетровск
  • +38(062) 210-24-93  Донецк
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 449-04-21  Life
  • +38(067) 400-88-44  Киевстар
  • +38(095) 007-72-35  MTC
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

MySQL. Помогите написать запрос

Форумы MySQL Помогите написать запрос
voowaa
21.05.2010 21:33
хостинг: есть
домен: есть
Помогите написать запрос
Есть таблица статистики:
id, time, ip, url, user-agent

Помогите написать запрос, который бы выдавал наиболее посещаемые урлы за последние N секунд
maximu_s
22.05.2010 01:01
хостинг: есть
домен: есть
1
SELECT * FROM TABLE_STAT
WHERE STR_TO_DATE('2010-05-21 23:59:00', '%Y-%m-%d %H:%i:%s')
AND STR_TO_DATE('2010-05-21 23:59:59', '%Y-%m-%d %H:%i:%s');
voowaa
22.05.2010 09:20
хостинг: есть
домен: есть
А что он даст? Как я понимаю, там должна быть конструкция вроде ... ORDER BY ... COUNT(...) и какое-то объединение.
maximu_s
22.05.2010 11:45
хостинг: есть
домен: есть
1
ну вообще то он даст выборку за период от и до,
а наиболее посещаемые урл - да, ты прав по GROUP BY ... ASC

Да и еще придется подставлять PHP переменные в формате date('Y-m-d H:i:s',time);

А вообще, если ты заговорил про объединение, то зачем спрашивать за такие мелочи, главное не делать так:
SELECT * FROM TABLE_STAT
WHERE time<="ВРЕМЯ" AND time>="ВРЕМЯ+10"
maximu_s
22.05.2010 12:00
хостинг: есть
домен: есть
1
сори, протупил, щас приду домой и напишу
maximu_s
22.05.2010 12:40
хостинг: есть
домен: есть
1
Во-первых в своем первом посте я упустил BETWEEN

Короче, вот рабочий вариант с выводом количества посещений(записей)

SELECT *,count(url) FROM table_stat t
where time_ BETWEEN
'' #<------------ ВРЕМЯ ОТ
AND
'' #<------------ ВРЕМЯ ДО
group by url

ВРЕМЯ ЛУЧШЕ, ДА И ПРОЩЕ ХРАНИТЬ В UNIXtime
Илья
22.05.2010 15:43
хостинг: есть
домен: есть
1. Поле id из таблицы со статистикой желательно убрать. Так как вряд-ли оно там нужно.
2. Создать индекс по полю time и url ALTER TABLE table_name ADD INDEX time (time, url)
3. Сам запрос:
SELECT COUNT(*) as amount, url
FROM table_name
WHERE time BETWEEN '01.02.2010 00:00:00' AND '01.02.2010 10:00:00'
GROUP BY url
ORDER BY amount DESC
voowaa
23.05.2010 00:27
хостинг: есть
домен: есть
Спасибо, ребята, буду теперь экспериментировать.
voowaa
23.05.2010 22:23
хостинг: есть
домен: есть
PS: Получилось.
Участвовать в общении на этом форуме могут только
зарегистрированные пользователи.

Если вы уже зарегистрированы Вам необходимо войти на форум.

Тема закрыта по истечению срока давности.
Горячая линия
(044)
392 74 33
другие города