mysql:相关子查询和/或左连接

时间:2012-01-22 18:26:18

标签: mysql subquery left-join

我对这一切都很陌生,所以我提前为这样一个基本问题道歉。

我有三个表:问题,解决方案和投票。

问题有:ID,问题

解决方案有:ID,ProblemID,解决方案

投票有:ID,SolutionID,投票类型,日期/时间

计划是任何用户都可以发布问题(针对内部工作网站),任何人都可以添加解决方案列表。然后,他们也可以就特定问题的任何解决方案进行投票。他们也可以改变主意,选择不同的解决方案,让我们看看意见如何随着时间而变化。 VoteType将被记录为Stick或Twist。坚持他们目前的投票,Twist是他们改变主意的记录。

我正在寻找一个mysql查询,将所有解决方案输出到给定问题,并在下一列中计算适当的投票数(现在所有的支持)。我遇到的问题是我无法弄清楚如何使用子查询并正确连接,这样如果解决方案没有投票,我仍然可以在适当的位置输出“0”或“无投票”。

同样,我对此很新,所以我为这样一个愚蠢的问题道歉!感谢...

1 个答案:

答案 0 :(得分:0)

 select p.Problem, s.Solution, count(v.ID) as Sticks
 from Problems as p 
 inner join Solutions as s on s.ProblemID = p.ProblemID 
 left outer join Votes as v on  v.SolutionID = s.SolutionID 
                            and v.VoteType = 'Stick' 
 group by s.ID