2014-06-12 95 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