使用多个表中的计算创建SQL视图

时间:2014-06-30 16:05:46

标签: mysql sql

所以我有两张表需要我提供信息。我有一个 ballot_table(投票CHAR(30),用户名CHAR(30)),其中包含每个用户投票的候选人的姓名。我还有另一张表格,里面有候选人名单。我需要在某个查询中以ballot_table的形式返回候选人列表,其中有相应的次数。谢谢!

2 个答案:

答案 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 JoinGroup 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表中候选人的总票数。任何其他“写入”投票都不包括在内。