Сортировка по дате и просмотрах

Тема в разделе "Базы данных", создана пользователем Smile, 30 апр 2015.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Smile

    Smile

    Регистр.:
    12 ноя 2006
    Сообщения:
    157
    Симпатии:
    11
    Добрый день,

    столкнулся с проблемой... копаю со вчерашнего дня но проблему так и не решил...

    Хочу создать топ самых популярных постов за 6 часов к примеру.
    Если постов за 6 часов нету или их меньше 5 к примеру, выводим за 24 часа.

    Таблица

    id | name | date(unix_timestamp) | views
    ----------------------------------------------------
    1 | post1 | 30.04.2015 17:30 | 191
    2 | post2 | 30.04.2015 15:30 | 30
    3 | post3 | 30.04.2015 14:30 | 90
    4 | post4 | 29.04.2015 23:30 | 70
    5 | post5 | 29.04.2015 22:30 | 40

    Как сделать сортировку чтобы получить вот такой результат:

    id | name | date(unix_timestamp) | views
    ----------------------------------------------------
    1 | post1 | 30.04.2015 17:30 | 191
    3 | post3 | 30.04.2015 14:30 | 90
    2 | post2 | 30.04.2015 15:30 | 30
    4 | post4 | 29.04.2015 23:30 | 70
    4 | post5 | 29.04.2015 22:30 | 40

    Я пробовал что-то вроде этого, но это не то...

    $sql = "SELECT * FROM `articles` WHERE CASE WHEN created_at > unix_timestamp(now() - interval 4 hour) THEN created_at > unix_timestamp(now() - interval 4 hour) ELSE created_at > unix_timestamp(now() - interval 12 hour) END ORDER BY views DESC LIMIT 9";

    Кто знает, помогите плз...
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.518
    Симпатии:
    1.368
    напиши select за 5 часов
    напиши select за 24 часа
    поставь между ними Перейти по ссылке
    оберни все это скобками и поставь лимит, типа
    Код:
    select * from  (... union ...) as t limit 5
     
    Последнее редактирование: 1 май 2015
    Smile нравится это.
Статус темы:
Закрыта.