【发布时间】:2009-12-21 06:40:22
【问题描述】:
我正在尝试编写一个查询,返回过去 7 天在我的网络应用上获得最多积分的前 10 名用户的用户 ID。
我有三个表,它们一起包含我需要的信息。
-
votingapi_votes表。它记录了对评论或节点的每次赞成/反对投票。 -
node表。它可以将节点 ID 与用户 ID 相关联,这样您就可以确定谁发布了故事并获得了选票。 -
comments表,对 cmets 也是如此。
我相信我需要编写一个查询,从 voteapi_vote 表中选择上周对评论或节点的每一次投票。
这是该表的结构:
- vote_id
- content_type
- content_id
- 价值
- value_type
- 标签
- uid
- 时间戳
所以我会选择 Unix 时间戳大于 time() - 684000 的 content_type "node" 或 "comment" 行。
那就需要
按“content_id”对这些投票进行分组。
在“node”和“cmets”表中查找每个 content_id 各自的“user_id”值,以便我们知道谁制作了节点和 cmets。
计算每个 user_id 从他的节点和 cmets 获得的总分。
对这些 user_id 进行倒序排序,并将其限制为仅显示前 10 个。
呸。这似乎是我需要做的。现在这个实际的查询是什么样的?
【问题讨论】:
-
value栏是代表投票的总和,还是代表个人投票?value_type列的用途是什么 - 如果值为负数或正数? -
Value_type 将是所有这些的“点”。 “值”将是“1”或“-1”。因此,如果将 content_id 的所有值相加,就可以得到它的当前分数。