【发布时间】:2009-12-03 06:48:13
【问题描述】:
所以我有这个从我的链接和投票表中提取的查询,我需要最后一列数据。我的投票表由每个用户的投票组成,用户每个链接只能投票一次,他们的投票值为 -1、0 或 1。投票表中有一个 user_id 外键,我想以某种方式收集当前用户的投票.我觉得当前查询的复杂性可能需要第二次查询,但如果可能的话,我真的想避免这种情况。我只需要知道当前登录用户的投票是什么。一个链接永远不会有超过一个投票值,因为用户只能对一个链接投票一次。
一些笔记
- 所有链接都会自动启动,当前用户至少投过一票
- 在链接上投票然后取消选择该投票的用户将保持该投票条目的增量为 0
SQL:
SELECT links.*, (SUM(votes.karma_delta)) AS karma
FROM links, votes
WHERE links.id = votes.link_id
GROUP BY votes.link_id
ORDER BY (SUM(votes.karma_delta) - 1) / POW((TIMESTAMPDIFF(HOUR, links.created, NOW()) + 2), 1.5) DESC
LIMIT 0, 100
虽然优化很棒,但现在我只想获取指定用户选择的链接 karma_delta。
【问题讨论】:
-
我建议您使用带有 ON 子句而不是 WHERE 子句的常规 JOIN 语法,因为这样会更快...