我试图实现的与我们在 SO 上的类似。我想按最后一天、上个月等的投票对帖子进行排名。我的架构由两个表组成,
post(id, post, posted_on..)
vote(post_id, vote_value, date)
我希望架构是非常不言自明的。问题是,如果我通过对帖子和投票进行内部连接并使用 where 子句('')来“按天”排序votes.date >= DATE_SUB(CURDATE(), INTERVAL 1 DAY
,它确实按预期工作,但无法显示其他帖子。我的意思是,在最后一天没有投票的帖子完全被忽略了。我想要的是这些帖子的优先级较低,但确实显示在查询中。
虽然,我可能会考虑使用联合操作,但我正在寻找另一种方法。
更新:可以说,有两个帖子,1,2。
投票表就像,
post_id vote_value date
1 1 2012-12-19
2 1 2012-12-10
如果我按照我的方法查询,那么只会显示帖子 - “1”,因为我已经设置了日期限制,但我希望两者都显示。这是我的查询:
SELECT `id`, SUM(`votes`.`votes`) AS likes_t, `post`.* FROM `posts` JOIN `votes` ON (`id` = `votes`.`post_id`) WHERE `votes`.`date` >= DATE_SUB(CURDATE(), INTERVAL 2 DAY)