我要做的是在电子报首页上对视频进行排序。所有视频将按日分组在一起。每页多天。在每天的部分中,我想按照大多数观看或任何其他类型的第二种排序算法来订购视频。
期望的结果:
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)
然后会有分页,所以第二页将继续2月14日,13日等...
仅供参考,我知道这可能不是最好的方法,但数据库结构使用存储在int(11)字段中的unix时间戳。
我正在使用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
scheduled_date是unix时间戳
答案 0 :(得分:0)
就像Simon在上面的评论中提到的那样,如果scheduled_date字段只是一个Date,那就更简单了。如果是这种情况,那么您可以使用以下查询获得结果:
SELECT 'scheduled_date', 'video_pk', 'views' FROM 'table'
GROUP BY 'scheduled_date',video_pk ORDER BY 'scheduled_date','views' DESC
将它作为时间戳,事情会变得更加复杂,因为您必须有一些方法来确定视频是否在同一天,因此您可以根据需要使用单个查询来执行此操作。
编辑:您提到您希望将其保留为与网站其他部分一起使用的时间戳。也许一个可能的解决方案是保留一个附加字段,将时间戳存储在日期旁边,或者如果您不需要特定时间,只需要重要日期,您可以在需要时将日期转换为时间戳。