Mysql выборка записей со сравнением с предыдущей

Тема в разделе "Базы данных", создана пользователем Festem, 10 июн 2015.

Модераторы: latteo
  1. Festem

    Festem Постоялец

    Регистр.:
    4 сен 2014
    Сообщения:
    97
    Симпатии:
    26
    Помогите в составлении запроса. Суть следующая - есть таблица постов с полями datapost и tema, которое содержите время создания поста в UNIX формате. Мне надо найти все посты, которые создались не более чем через час после предыдущей записи в этой же теме. Реально сделать это средствами mysql? Т.е. вывести список таких тем в качестве результата
     
  2. Горбушка

    Горбушка Ищу её...

    Регистр.:
    2 май 2008
    Сообщения:
    3.036
    Симпатии:
    2.040
    Код:
    SELECT `tema` FROM `table` WHERE `datapost` > (SELECT `datapost` FROM `table` WHERE `id` = 1) AND `datapost` <= (SELECT `datapost` FROM `table` WHERE `id` = 1) + 3600;
    Говнокод, но должно работать...
     
    Festem нравится это.
  3. BaBL

    BaBL Постоялец

    Регистр.:
    13 ноя 2012
    Сообщения:
    144
    Симпатии:
    87
    Попробуй нечто подобное:
    Код:
    SELECT t1.tema, t1.datapost, t2.tema, t2.datapost FROM `table` t1
    join `table` t2 on t2.tema = t1.tema and t2.id > t1.id and t2.datapost >= t1.datapost and t2.datapost < (t1.datapost + +3600)
    вместо tema в сравнениях лучше использовать какой-нибудь числовой topic_id и сделать индексы по этим полям.