За последние 24 часа нас посетили 23911 программистов и 1641 робот. Сейчас ищут 860 программистов ...

Подскажите, как выполнить запрос

Тема в разделе "MySQL", создана пользователем FalkoN, 26 мар 2012.

  1. FalkoN

    FalkoN Активный пользователь

    С нами с:
    1 апр 2011
    Сообщения:
    184
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Задача вывести записи за последние 3 дня (точнее последние 3 даты) из таблицы с полями id | text | date (дата записи).
    содержание может быть таким:
    id | text | date (дата записи).
    1 | text1 | 01-01-2012
    2 | text2 | 01-01-2012
    3 | text3 | 10-01-2012
    4 | text4 | 10-01-2012
    5 | text5 | 15-01-2012
    6 | text6 | 15-01-2012
    7 | text7 | 20-01-2012
    То есть надо вывести text3 ... text7.
    Я придумал вариант в два запроса: SELECT date GROUP BY date ORDER BY date DESC LIMIT 3.
    Получаю три последних даты. Потом вторым запросом выбираю записи для каждой даты.
    Мне кажется, можно одним запросом обойтись, но не знаю как!
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    если даты повторяются, если возможны "дыры" в последовательности дат, то как ты описал, так оно и делается.
     
  3. FalkoN

    FalkoN Активный пользователь

    С нами с:
    1 апр 2011
    Сообщения:
    184
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Именно поэтому я и озадачился )
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    Можно буквально самую малость оптимизировать. В итоге нам нужны записи с датой >= третьей с конца дате (LIMIT 3,1).
    Т.е. нам не надо буквально получить три даты и потом совать их в следующий запрос. Надо найти 1 дату и потом сравнивать ">="
     
  5. FalkoN

    FalkoN Активный пользователь

    С нами с:
    1 апр 2011
    Сообщения:
    184
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Точно! Спасибо! вот почему мне решение не понравилось! я по каждой дате запрос делаю! ))