因此,我实际上要实现的目标是过滤最多的故事。这些故事被保存在一张桌子中,所有票都在另一张桌子中保存在另一张桌子中。

我有此声明可以正确获取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。

许可以下: CC-BY-SA归因
不隶属于 dba.stackexchange
scroll top