0

我必须在我的数据库中的表,第一个(参与者)看起来就像这样:

在此处输入图像描述

我还有另一个叫票,我可以在其中投票给任何参与者。

在此处输入图像描述

所以我的问题是我试图获得每个参与者的所有选票,但是当我执行查询时,它只检索按 COUNT 投票排序的四行,而剩下的其他行没有出现在我的查询中:

SELECT COUNT(DISTINCT `votes`.`id`) AS count_id, participants.name 
AS participant_name FROM `participants` LEFT OUTER JOIN `votes` ON
`votes`.`participant_id` = `participants`.`id` GROUP BY votes.participant_id ORDER BY
votes.participant_id DESC;

检索:

在此处输入图像描述

4

2 回答 2

2

我认为问题在于您是按 分组votes.participant_id,而不是分组participants.id,这将您限制为有投票的参与者,outer join尽管如此。查看http://sqlfiddle.com/#!2/c5d3d/5/0

于 2013-06-21T23:38:15.607 回答
0

正如我从您提供的查询中了解到的那样,您正在从投票表中选择唯一 ID,并且我假设您的列 ID 不是身份。但如果那是一个身份会更好吗?如果是这样,这是我的答案。用这些替换您的选择。

Select count (votes.participant.id) as count_id ,participants.name as participant_name 
from participants join votes
on participants.id = vote.participant_id
group by participants.name
order by count_id

让我知道它是否有效

于 2013-06-22T00:42:06.280 回答