根据提交日期和观看次数按人气排序

时间:2013-09-07 12:25:50

标签: php mysql sql pdo

我目前尝试按人气方式对数据库中的行(帖子)进行排序的方式是将帖子所具有的数字视图提交的时间戳除以然后按升序排序。

我的表格如下所示

ID      submitted             views

1  2013-09-03 15:14:05          1

2  2013-09-04 11:13:54          2

3  2013-09-05 18:14:13          3

4  2013-09-06 12:05:05          4

我试过了

SELECT * FROM posts ORDER BY SUM(unix_timestamp(submitted)/views) ASC LIMIT 30

然而,当我有将近40个帖子时它只给出1个结果

我也尝试过没有和函数

SELECT * FROM posts ORDER BY unix_timestamp(submitted)/views ASC LIMIT 30

但所有这一切似乎都是按照降序排列的顺序显示它们的帖子,这真的很奇怪,因为我已经说过ASC了。

如果我以任何方式帮助我使用PDO。

3 个答案:

答案 0 :(得分:0)

SELECT * FROM posts ORDER BY views ASC

这不起作用吗?

答案 1 :(得分:0)

我的猜测是,您希望按照now()与提交时间之间的差异进行排序,除以视图。这粗略衡量每单位时间的平均观看次数,这是一个对我有意义的衡量标准:

ORDER BY (unix_timestamp(now()) - unix_timestamp(submitted)) / views ASC

这将以具有最高视图频率的帖子返回帖子。

答案 2 :(得分:0)

好像您的查询是正确的并且正确排序数据,请参阅时间戳列:

SELECT *, unix_timestamp(submitted)/views As timestamp FROM posts ORDER BY 
unix_timestamp(submitted)/views ASC LIMIT 30;

请参阅此小提琴http://sqlfiddle.com/#!2/8a8f4/11

你应该改变你的逻辑。