我是SQL新手,无法设置此查询。我有两个表,一个包含有关团队的信息,名为TEAMS,如下所示:
小组
Name|City|Attendance
Jets| NY| 50
...
另一个持有游戏信息,名为GAMES:
游戏
Home|Visitors|Date |Result
Jets| Broncos| 1/1/2012| Tie
...
对于这个特定的查询,我需要找到每个拥有一个或多个主场比赛的球队,给出球队名称,胜利数量,失败数量和关系数量。我无法弄清楚如何合并数据,我已经做了几个查询,分别找到了损失,胜利和关系的数量,但我不知道如何正确加入或甚至是正确的方法。谢谢!
答案 0 :(得分:0)
这应该让你非常接近,但如果不完全理解你的数据,我真的无法给你一个完美的工作查询,但至少你可以看到连接的样子。
SELECT TeamName, SUM(SWITCH(Result = 'Win', 1)) AS Wins, SUM(SWITCH(Result = 'Tie', 1)) AS Ties, SUM(SWITCH(Result = 'Loss', 1)) AS Loss
FROM Teams INNER JOIN Games ON (Teams.TeamName = Games.Home OR Teams.TeamName = Games.Visitors)
GROUP BY TeamName
HAVING MAX(SWITCH(Teams.TeamName = Games.Home, 1)) = 1;
更好的数据库设计是在游戏桌中拥有ID而不是团队名称,并且还有类似" Tie"," Win",&#的描述34;损耗"我不确定哪个团队引用(显然领带很容易),所以现在查询只需要该列中的任何内容,我确定这是不正确的,但它应该是修改它的一个小改动。