0

我目前实现以下查询以获取数据库中与用户具有特定兴趣标签的所有帖子,并通过发布时间对这些帖子进行排序。我目前的查询非常完美。但是,我正在计划一个排序工具,供用户按分数(按喜欢或不喜欢计算)对帖子进行排序。

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
WHERE     profile.username = 'username'
ORDER BY time_posted DESC

现在,喜欢保存在一个“喜欢”表中,其中包含以下列:

post_id | score

因此,当用户对帖子进行评分时,post_idscore会添加到此表中,因此并非每个帖子都会有分数。我被困在实现按分数对帖子进行排序的能力上的哪些步骤。

没有分数的帖子将是 0。

编辑:

一个例子:

post_id|score
    1     1
    1     1 
    2     1

所以post 1一共有2个like,post有1个,所以按照每个post的总和排序。

4

1 回答 1

1

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

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
于 2013-04-15T21:39:09.470 回答