Сложный запрос

rudik

Developer
Сложный запрос

Если кому не сложно помогите написать запрос к
таблице с полями url, ip, user_id, timestamp.

Условие выборки:
Выбрать все кроме: двух одинаковых url с разницой
во времени до 1 минуты с одинаковым ip.

Все понятно как время вычеслить и т.д., а вот как
определить чтоб url больше двух было с одинаковым
ip это вопрос.
 

Demiurg

Guest
Что то как то не очень понятно, чего именно хочется. Может следует подумать над структорой самой базы, если такие сложные запросы возникают, а тем более если серверу их придется часто выполнять?
 

chira

Новичок
Если тебе нужны данные с точностью до минуты, то сразу сохраняй без секунд.

Для твоей структуры нужно будет использовать функцию.

select url, ip, DATE_FORMAT(timestamp,'%Y%m%d%H%i') as time
from my_table
group by url, ip, DATE_FORMAT(timestamp,'%Y%m%d%H%i')
having count('x') < 2

в этом варианте есть погрешность со временем
Если например две записи были записaны со временем (минуты:секунды)
5:59 и 6:01 , то они появятся в результате хотя и не должны.

Второй вариант:
select a.url, a.ip, a.timestamp
from my_table a, my_table b
where a.url = b.url and a.ip = b.ip and (a.timestamp - b.timestamp) > 60

Этот вариант больше для размышлений , а не практического применения as is.
 
Сверху