[英]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.