假设我有两个具有一对多关系的表。我想创建一个视图/查询来显示父行中的所有列并汇总子行中的总计。这是我经常遇到的一种情况,我不禁觉得我错过了一个更好、更明显的解决方案。我使用的一个是针对子表的多个连接,例如:
SELECT vt.*, COALESCE(count(mvAyes.*), 0) as Ayes, COALESCE(count(mvNoes.*), 0) as Noes FROM VoteTable vt
LEFT JOIN MemberVote mvAyes on mvAyes.VoteId = vt.Id AND mvAyes.Vote = 'Aye'
LEFT JOIN MemberVote mvNoes on mvNoes.VoteId = vt.Id AND mvNoes.Vote = 'No'
GROUP BY vt.Col1, vt.Col2 ... (all columns in Vote table)
另一种解决方案是使用相关子查询,据我所知,它的效率很低,尽管我认为上面的多重连接解决方案也很低效。
那么,有没有我不知道的更好的解决方案?谢谢!