Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 排序';最近流行的';来自一个表的帖子,受欢迎程度由另一个表的计数决定_Mysql_Sql_Database_Sorting - Fatal编程技术网

Mysql 排序';最近流行的';来自一个表的帖子,受欢迎程度由另一个表的计数决定

Mysql 排序';最近流行的';来自一个表的帖子,受欢迎程度由另一个表的计数决定,mysql,sql,database,sorting,Mysql,Sql,Database,Sorting,我正在创建一个文章聚合器。这些文章可以由登录的用户进行投票。 本问题的相关表格如下: 新闻 nid ntitle nurl ndatetime 16 Apple abc.com/apple 2017-07-23 16:16:35 17 XYZ forbes.com/xyz 2017-07-23 17:

我正在创建一个文章聚合器。这些文章可以由登录的用户进行投票。 本问题的相关表格如下:

新闻

nid    ntitle                     nurl              ndatetime

 16    Apple                       abc.com/apple    2017-07-23 16:16:35   
 17     XYZ                        forbes.com/xyz   2017-07-23 17:16:35   
 18     ABC                        tc.com/abc       2017-07-24 18:16:35   
upvoteid   nid    userid
  1         16      23
  2         16      107
  3         18      2045
向上投票

nid    ntitle                     nurl              ndatetime

 16    Apple                       abc.com/apple    2017-07-23 16:16:35   
 17     XYZ                        forbes.com/xyz   2017-07-23 17:16:35   
 18     ABC                        tc.com/abc       2017-07-24 18:16:35   
upvoteid   nid    userid
  1         16      23
  2         16      107
  3         18      2045
所需输出

18 
16
17
如何编写sql语句,对新闻表中最近流行的帖子进行排序。我所说的“受欢迎”是指投票最多的人

upvote表中包含nid的每一行都被计算为新闻文章的upvote。在上述情况下nid16的upvote计数为2。因此,它被放置在id为17的新闻上方,其向上投票计数为0。但18票排序高于16票,因为它是从一个更晚的日期开始的,尽管它的向上投票计数只有1票

请注意,nid为17的新闻的时间晚于16,但仍然低于16,因为它们的日期相同,并且当天的排序基于向上计票


最终的结果应该是今天的帖子按UPVOUTS总数排序,然后是昨天的帖子按最多UPVOUTS排序,依此类推。

如果你想按天排序帖子并在当天投票,那么即使是
UPVOUTS
表也需要有datetime

无论如何,在给定数据和预期结果的情况下,这里就是查询

SELECT n.nid, n.ntitle, n.nurl, DATE(n.ndatetime) as dateonly, up.votes
FROM news n, (SELECT nid, COUNT(*) AS votes
               FROM upvotes
               GROUP BY nid) AS up
WHERE n.nid = up.nid
ORDER BY dateonly DESC, up.votes DESC
样本运行

看到了吗?你能分享这两个表格的模式并详细说明你的问题吗?因为不清楚你在寻找什么?@JRG我做了一些编辑现在看看你最好先展示一些努力,并向我们提供你已经尝试过的东西。如果这样做,你没有得到你想要的结果,那么我们都可以帮助你更好。另外,最好也显示一个所需输出的示例。@PaulKaram我添加了一个示例输出。它不应该是按n.dateonly排序的
吗?添加表别名
n
nope,如果我使用
n.dateonly
,它会给出错误,因此我使用
dateonly
,而没有在它前面加别名
n
哦,好吧,我的错。也许这是因为你给了它一个别名。如果是列名,则会有所不同。不完全确定。