Для тех, кто не спит!
Скидка -15%
Мы используем cookie-файлы
Для оптимизации работы нашего сайта мы используем cookie-файлы. Продолжая использовать сайт, Вы соглашаетесь с использованием cookie-файлов.
Панель управления
  • Русский
  • Українська
  • UAH
  • USD
  • RUB
  • EUR
  • 0-800-307-307  Горячая линия
  • +38(044) 392-74-33  Киев
  • +38(057) 728-39-00  Харьков
  • +38(056) 794-38-31  Днепр
  • +38(032) 229-58-93  Львов
  • +38(048) 738-57-70  Одесса
  • +38(093) 170-15-42  Life
  • +38(067) 400-88-44  Киевстар
  • +1(888)393-24-51  USA, Toll free
  • +44(131)507-01-14  Great Britain
  • +7(499) 348-28-61  Москва

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


voowaa
11 лет
0
Помогите написать запрос

Есть таблица статистики:
id, time, ip, url, user-agent
Помогите написать запрос, который бы выдавал наиболее посещаемые урлы за последние N секунд

maximu_s
11 лет
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
11 лет
0

А что он даст? Как я понимаю, там должна быть конструкция вроде ... ORDER BY ... COUNT(...) и какое-то объединение.

maximu_s
11 лет
1

ну вообще то он даст выборку за период от и до,
а наиболее посещаемые урл - да, ты прав по GROUP BY ... ASC
Да и еще придется подставлять PHP переменные в формате date('Y-m-d H:i:s',time);
А вообще, если ты заговорил про объединение, то зачем спрашивать за такие мелочи, главное не делать так:
SELECT * FROM TABLE_STAT
WHERE time<="ВРЕМЯ" AND time>="ВРЕМЯ+10"

maximu_s
11 лет
1

сори, протупил, щас приду домой и напишу

maximu_s
11 лет
1

Во-первых в своем первом посте я упустил BETWEEN
Короче, вот рабочий вариант с выводом количества посещений(записей)
SELECT *,count(url) FROM table_stat t
where time_ BETWEEN
'' #<------------ ВРЕМЯ ОТ
AND
'' #<------------ ВРЕМЯ ДО
group by url
ВРЕМЯ ЛУЧШЕ, ДА И ПРОЩЕ ХРАНИТЬ В UNIXtime

rudenko
11 лет
0

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
11 лет
0

Спасибо, ребята, буду теперь экспериментировать.

voowaa
11 лет
0

PS: Получилось.

Участвовать в общении на этом форуме могут только зарегистрированные пользователи.