MySQL - «Группировать» несколько строк по дням, затем сортировать по наиболее просматриваемым - PullRequest
0 голосов
/ 17 февраля 2012

То, что я хочу сделать, это отсортировать видео на первой странице трубки. Все видео будут сгруппированы по разделам по дням. Несколько дней на каждой странице. В каждом разделе дня я хотел бы заказать видео по наиболее просматриваемым или любым другим типам алгоритма второй сортировки.

Желаемый результат:

Todays Videos:
  - Video 1 (100 views)
  - Video 2 (90 views)
  - Video 3 (50 views)

Yesterdays Videos:
  - Video 4 (400 views)
  - Video 5 (250 views)
  - Video 6 (100 views)

Feb 15th Videos:
  - Video 7 (600 views)
  - Video 8 (500 views)
  - Video 9 (300 views)

Тогда будет нумерация страниц, поэтому вторая страница продолжится с 14, 13 февраля и т. Д. ...

К вашему сведению, я знаю, что это, вероятно, не лучший способ, но структура базы данных использует метку времени Unix, хранящуюся в поле int (11).

Я использую CodeIgniter, но любой нормальный пример с MySQL подойдет, я бы хотел сделать это с помощью одного запроса. Я не уверен, смогу ли я сделать это с помощью groupby / orderby или некоторыми другими функциями. Я читал о группировках, но не уверен, что на правильном пути.

Любая помощь была бы великолепна, потому что я полностью застрял на этом.

Редактировать (добавить структуру таблицы):

video_pk int(10) unsigned NOT NULL auto_increment
views int(10) unsigned NOT NULL
scheduled_date int(11) NOT NULL

планируемая дата - метка времени Unix

1 Ответ

0 голосов
/ 17 февраля 2012

Как Саймон упоминал в комментариях выше, было бы намного проще, если бы поле schedule_date было просто Date, для того, что вы используете. Если это так, то вы можете получить результат с помощью следующего запроса:

SELECT 'scheduled_date', 'video_pk', 'views' FROM 'table' 
GROUP BY 'scheduled_date',video_pk ORDER BY 'scheduled_date','views' DESC

С этой отметкой времени все становится более сложным, поскольку вам необходимо каким-то образом определить, находятся ли видео в один и тот же день, что затрудняет выполнение одного запроса, как вам бы хотелось.

Редактировать. Вы упомянули, что хотите сохранить его в качестве метки времени для использования с другими частями сайта. Возможно, возможным решением было бы сохранить дополнительное поле, в котором хранится временная метка вместе с датой, или, если вам не нужно определенное время, а просто важная дата, вы можете преобразовать дату в временную метку, когда вам это нужно.

...