Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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 - Fatal编程技术网

修改MySQL查询以实现排序

修改MySQL查询以实现排序,mysql,Mysql,目前,我实现了以下查询,以获取数据库中与用户具有共同的特定兴趣标记的所有帖子,并通过发布时间对这些帖子进行排序。我目前提出的问题非常有效。然而,我正计划为用户提供一个排序工具,以便根据分数(根据喜欢或不喜欢的内容计算)对帖子进行排序 现在,like保存在一个表“likes”中,表中有以下列: post_id | score 因此,当用户为帖子打分时,post\u id和score将添加到此表中,因此并非每个帖子都有分数。我被困在实现按分数排序帖子的能力的步骤上 一篇没有分数的文章将是0 编辑:

目前,我实现了以下查询,以获取数据库中与用户具有共同的特定兴趣标记的所有帖子,并通过发布时间对这些帖子进行排序。我目前提出的问题非常有效。然而,我正计划为用户提供一个排序工具,以便根据分数(根据喜欢或不喜欢的内容计算)对帖子进行排序

现在,like保存在一个表“likes”中,表中有以下列:

post_id | score
因此,当用户为帖子打分时,
post\u id
score
将添加到此表中,因此并非每个帖子都有分数。我被困在实现按分数排序帖子的能力的步骤上

一篇没有分数的文章将是0

编辑:

例如:

post_id|score
    1     1
    1     1 
    2     1

因此,post 1总共有2个like,post有1个,因此它将根据每个post的总和进行排序

您应该能够在不向SELECT语句添加任何内容的情况下对Likes表进行内部联接。然后,您可以按它进行排序:

SELECT DISTINCT p.* FROM posts AS p
  INNER JOIN post_tag AS posttag ON p.post_id = posttag.post_id
  INNER JOIN profile_tag AS profiletag ON posttag.tag_id = profiletag.tag_id
  INNER JOIN profile AS profile ON profile.profile_id = profiletag.profile_id
  INNER JOIN Likes AS l ON l.post_id = p.post_id
WHERE     profile.username = 'username'
ORDER BY l.score, time_posted DESC

然后尝试按计数(分数)排序。我尝试了这个方法,但是它似乎只显示一篇文章的结果?这就是我所改变的:
orderbycount(l.score)DESC
Yikes。。。很抱歉。不知道我在想什么。试试Sum(),也许吧?不走运!当只返回一个结果时也会发生同样的情况。它似乎只返回得分最高的物品。好的。。。在SELECT语句中包含sum(分数),然后按post_id分组。
SELECT DISTINCT p.* FROM posts AS p
  INNER JOIN post_tag AS posttag ON p.post_id = posttag.post_id
  INNER JOIN profile_tag AS profiletag ON posttag.tag_id = profiletag.tag_id
  INNER JOIN profile AS profile ON profile.profile_id = profiletag.profile_id
  INNER JOIN Likes AS l ON l.post_id = p.post_id
WHERE     profile.username = 'username'
ORDER BY l.score, time_posted DESC