【问题标题】:nesting selects to make popularity algorithm嵌套选择制作流行度算法
【发布时间】:2010-12-20 01:35:24
【问题描述】:

我正在尝试编写一个用于制作流行度算法的 sql 函数。

我想使用帖子的“post_id”按“cmets”中的 cmets 数量对“帖子”进行排序,并使用帖子的“post_id”添加到“votes”表中的投票数量,全部按“帖子”表中的“日期”排序(时间戳)。

我不确定如何进行这种多表排序,所以我正在寻求一些指导!

提前致谢,威尔。

【问题讨论】:

  • 触摸点击 - 听起来很复杂,介意包含您的表架构吗?
  • 对不起,你什么意思?

标签: php sql sorting popularity


【解决方案1】:

我还没有测试,但它可能有效:

SELECT `post_id`, COUNT(`post_id`) AS `count` FROM `comments` GROUP BY `post_id`

此外,您还可以将其加入到帖子表中:

SELECT * FROM `posts` LEFT JOIN (SELECT `post_id`, COUNT(`post_id`) AS `count` FROM `comments` GROUP BY `post_id`) AS `p` ON(`post_id`)

【讨论】:

  • 嗯。似乎没有正确的效果。我想按 cmets + 该帖子的投票排序帖子。
  • 将其标记为正确,因为您将我引向正确的方向。
【解决方案2】:

我只是根据“投票”数决定去。

SELECT posts.id, posts.date, COUNT(votes.id) AS votePerPost FROM posts,votes WHERE posts.id = votes.post_id GROUP BY posts.id ORDER BY posts.date DESC, votePerPost ASC

因为这是一个足够接近的例子。我一直在寻找的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多