1

我有 2 张桌子。一个是项目,另一个是对这些项目的投票。

Items table has: |item_id|name|post_date
Votes table has: |votes_id|item_id|answer|total_yes|total_no

我想要做的是根据 post_date 显示所有项目,并在投票表中以最高的 total_yes 显示答案。因此,我只想从投票表中显示一个具有最高 total_yes 投票的单一答案。

我在尝试:

SELECT a.*, b.* FROM Items a
INNER JOIN Votes b ON a.item_id = b.item_id
GROUP by a.item_id
ORDER by a.post_date DESC, b.total_yes DESC

但这不起作用。

我想看到的结果是:

<item><answer><yes votes>
Buick | Fastest | 2 yes votes
Mercedes | Shiny | 32 yes votes
Honda | Quick | 39 yes votes

任何帮助表示赞赏!

4

2 回答 2

8
SELECT a.*, b.*
  FROM Items a
       LEFT JOIN Votes b on a.item_id = b.item_id
                         and b.total_yes = (select max(total_yes) 
                                              from Votes v 
                         where v.item_id = a.item_id)
ORDER BY a.post_date DESC, b.total_yes DESC

注意:如果您有相同的 total_yes = max 的项目 2 答案,则该项目将有 2 行。

于 2009-09-15T08:43:16.340 回答
0

添加LIMIT 1到查询的末尾:)

这将只记录一条记录,但目前您是按日期排序的,因此您将在最后一个投票日期获得最高票数。那是你要的吗?

如果你想要最高的总票数,不管你需要先订购。

于 2009-09-15T08:34:30.040 回答