所以我有两张表需要我提供信息。我有一个 ballot_table(投票CHAR(30),用户名CHAR(30)),其中包含每个用户投票的候选人的姓名。我还有另一张表格,里面有候选人名单。我需要在某个查询中以ballot_table的形式返回候选人列表,其中有相应的次数。谢谢!
答案 0 :(得分:1)
这是一个可怕的设计,但这是你如何做到的:
select count(*) as votes, vote as [candidate]
from ballot_table
where ucase(vote) in (select ucase(item) from table_with_list_of_candidates)
group by ucase(vote)
更好的设计会让候选表列表包含一个键,然后只需要在ballot_table中使用varchar进行写入(如果需要)。
答案 1 :(得分:0)
您可以使用Outer Join
和Group By
执行此操作。我假设candidate
表中的字段名称是Name
。
Select c.Name, Count(Distinct b.UserName) Votes
From ballot_table b
Right Join candidate c On c.Name = b.Vote
Group By c.Name
这只会返回您Candidate
表中候选人的总票数。任何其他“写入”投票都不包括在内。