繁体   English   中英

如何将多个SQL查询合并为一个

[英]How to combine several SQL queries into one

我想将几个查询的结果合并为一个,但我想知道是否有可能。 第一个查询统计给定年份中每个推荐人拥有的游戏数量:

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

第二个查询计算每个参照分配的惩罚数:

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个类似的查询。 结果应该是一个SQL,可以使它生成如下表:

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

我尝试了一些组合以将其组合在一起,但是它们都以语法错误结尾。

您应该能够将每个查询视为派生表,并将它们联接在一起。 您在查询中唯一要加入的就是姓氏,但是既然如此,那么您的分组就没有关系了。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM