【问题标题】:Sorting through mysql table and order by amount通过mysql表排序并按金额排序
【发布时间】:2012-03-24 20:23:53
【问题描述】:

我目前正在尝试创建一个包含 5 个我的博客标题的列表,它们从 1 到 5 进行排名,1 是最受欢迎的,而 5 是最不受欢迎的。我如何对它们进行排名是通过视图。现在我已经在一个名为 blog_views 的表中创建了视图,而博客则称为 blog。

所以我要做的是让 PHP 通过记录在其中的博客 ID 对记录在 blog_views 中的视图进行排序,然后列出曾经有很多视图的博客标题,以最少的视图.我怎么能做到这一点?我希望我的问题很清楚!

我尝试过尝试,但失败了,因为我找不到正确的方法。

提前感谢您的帮助!

这是两个表的 Schema:

Blog{ blog_id, title, body, userinformation}

blog_views{ viewid, ip, time, blog_id, used}

【问题讨论】:

  • 您所指的称为JOIN。我建议你read some tutorials
  • 你能发布 blog 和 blog_views 表的基本架构吗?
  • 当然,我会添加这两者的架构。

标签: php mysql count sql-order-by


【解决方案1】:

如果我理解您要正确执行的操作,JOIN 应该会这样做;

SELECT blog.blog_id, COUNT(blog_views.blog_id) as views 
FROM blog
LEFT JOIN blog_views 
  ON blog.blog_id=blog_views.blog_id
GROUP BY blog.blog_id
ORDER BY COUNT(blog_views.blog_id) DESC;

简而言之,选择所有博客/博客视图组合,将它们按 blog_id 分组以便能够计算每个博客 id 的视图,最后按视图数降序排列。

演示here.

【讨论】:

  • 它返回空白,没有任何结果。
  • 这可能是我的结束,让我再看一遍代码。不过感谢您的帮助!
  • 啊,所以,我回显了 ID,这行得通,但如果我要回显标题,它就行不通了。我想附和标题,我想我必须修改你给我的代码,但它工作得很好,非常感谢!
猜你喜欢
  • 2016-05-06
  • 1970-01-01
  • 2012-12-15
  • 2016-01-08
  • 2015-01-24
  • 2022-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多