我想将几个查询的结果合并为一个,但我想知道它是否可能。 第一个查询计算每个推荐在特定年份中的游戏数量:
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 |
我尝试了一些组合将它们放在一起,但它们都以语法错误结束。
答案 0 :(得分: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
如果你有第三个查询,你可以使用相同的逻辑将其添加到那里。