2014-06-12 68 views
1

我想将几个查询的结果合并为一个,但是我想知道这是否可能。 首先查询计算的每场比赛都有refery给定年份的数字:如何将几个SQL查询合并为一个

SELECT count(1),ejl_refery.surname FROM ejl_protocols 
left join ejl_refery on ejl_protocols.refery = ejl_refery.id 
WHERE ejl_protocols.season = 2013 group by refery 

第二查询计算每个refery分配处罚的数量:

SELECT count(1),ejl_refery.surname FROM ejl_protocols 
left join ejl_play_events on ejl_protocols.id = ejl_play_events.protocol_id 
left join ejl_refery on ejl_protocols.refery = ejl_refery.id 
WHERE ejl_protocols.season = 2013 and ejl_play_events.event_id in (3,4) 
group by refery 

而且我有1个更多的类似查询。 结果应该是,将enalbe生成表像SQL:

Refery Surname | Number of games | Number of penalties | Number of cards | 

我尝试了一些组合,把它在一起,但他们都在语法错误结束。

回答

1

您应该可以将每个查询视为派生表,然后将它们结合在一起。你在查询中加入的唯一东西就是姓氏,但是因为这就是你所有的分组都不重要。

Select 
g.surname, 
g,games, 
p.penalties 

from 
(SELECT count(1) as games,ejl_refery.surname FROM ejl_protocols 
left join ejl_refery on ejl_protocols.refery = ejl_refery.id 
WHERE ejl_protocols.season = 2013 group by refery) g 
inner join 
(SELECT count(1) as penalties,ejl_refery.surname FROM ejl_protocols 
left join ejl_play_events on ejl_protocols.id = ejl_play_events.protocol_id 
left join ejl_refery on ejl_protocols.refery = ejl_refery.id 
WHERE ejl_protocols.season = 2013 and ejl_play_events.event_id in (3,4) 
group by refery) p 
on g.surname = p.surname 

如果您有第三个查询,您可以使用相同的逻辑在其中添加它。

+0

我得到语法错误:'字段列表'中的未知列'g.surname'。编辑:愚蠢的我 - SQL G中有错字 - >< - g – Riho