繁体   English   中英

将3个SQL SELECT合并为一条语句

[英]Combine 3 SQL SELECT into one statement

我有3张桌子:

  • 战队(id_team,名称,id_season)
  • 季节(id_season,名称,nbr_teams)
  • Teams_Stats(id_stats,id_game,id_team,胜利,失败,平局)

我有3个单独运行良好的查询:

SELECT T.name, count(TS.victory) as Wins
FROM Teams T
JOIN Seasons S ON T.id_season = S.id_season AND S.name = '2015'
LEFT JOIN Teams_Stats TS ON TS.id_team = T.id_team AND TS.victory = 1
GROUP BY T.name 
ORDER BY T.name

SELECT T.name, count(TS.defeat) as Losses
FROM Teams T
JOIN Seasons S ON T.id_season = S.id_season AND S.name = '2015'
LEFT JOIN Teams_Stats TS ON TS.id_team = T.id_team AND TS.defeat = 1
GROUP BY T.name 
ORDER BY T.name

SELECT T.name, count(TS.victory) as Draws
FROM Teams T
JOIN Seasons S ON T.id_season = S.id_season AND S.name = '2015'
LEFT JOIN Teams_Stats TS ON TS.id_team = T.id_team AND TS.draw = 1
GROUP BY T.name 
ORDER BY T.name

我想知道如何只用1个查询就能得到相同的结果。 我就是不明白吗? 也许有人可以给点光...

我很感激

谢谢。

您可以使用条件聚合:

SELECT T.name, 
       sum(TS.victory=1) as Wins,
       sum(TS.defeat=1) as Losses,
       sum(TS.draw =1) as Draws
FROM Teams T
JOIN Seasons S ON T.id_season = S.id_season AND S.name = '2015'
LEFT JOIN Teams_Stats TS ON TS.id_team = T.id_team 
GROUP BY T.name 
ORDER BY T.name

在这里演示

暂无
暂无

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

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