题
因此,我实际上要实现的目标是过滤最多的故事。这些故事被保存在一张桌子中,所有票都在另一张桌子中保存在另一张桌子中。
我有此声明可以正确获取VID列订单:
SELECT vid, COUNT(id) AS votecnt
FROM votes
WHERE status = 1
GROUP BY vid
ORDER BY votecnt DESC
然后,我必须自己过滤故事,我希望像在第一子句中一样被订购。
SELECT vid, body, timestamp
FROM stories
WHERE lv = 1
AND status = 1
问题是,这是我需要的顺序,因为第一个语句不会返回第二个行所做的所有行。如果第一个查询最初按status = 1计数,然后总投票将表格排列,那就更好了。
有什么想法如何将所有这些加入SQL查询?还是我应该在两者之间使用PHP?
解决方案
除非我严重误解了您的结构,否则简单的连接应该很好:
SELECT stories.vid, body, timestamp, COUNT(votes.id) votecnt FROM stories
INNER JOIN votes ON stories.vid=votes.vid
WHERE stories.lv=1 AND stories.status=1
GROUP BY votes.vid
ORDER BY votecnt DESC
我不确定你是什么意思
如果第一个查询最初按status = 1计数,然后总投票将表格排列,那就更好了。
由于您的陈述仅使用具有状态的投票/故事= 1。
不隶属于 dba.stackexchange