如何合并 MySql 中的两个查询?
How to merge with two queries in MySql?
尽管我之前的 post 部分正确,但我创建这个 post 并没有得到我想要的确切结果。
我无法得到正确的答案我想根据主客场的结果找到 team_id 球队的胜负和平局。我创建的查询总是显示主队胜、负和平局,而不考虑 team_id。如何正确查询输入team_id指定球队的主客场胜负平局?
我的 table 结构是;
团队 table 字段:team_id、team_name
联赛 table 字段:league_id、league_name
匹配 table 字段:match_id、match_date、home_team_id、a.team_id、home_score、away_score、league_id
而且我无法合并这两个查询。我认为如果两个查询都可以合并,它将给出我预期的结果。
错误的工作查询是:
-- Arsenal's Home W,L and D results query
select t1.team_name hometeam, m.home_score, t2.team_name awayteam, m.away_score,
CASE WHEN m.home_score > m.away_score THEN 'W'
WHEN m.home_score < m.away_score THEN 'L'
WHEN m.home_score = m.away_score THEN 'D'
END AS results
from matches m
join teams t1 on m.home_team_id = t1.team_id
join teams t2 on m.away_team_id = t2.team_id
where m.home_team_id = '21' or m.away_team_id = 21;
结果:(客场赢显示为输,客场输显示为赢)
HomeT
HS
AwayT
AS
results
Brentford
2
Arsenal
0
W
Arsenal
0
Chelsea
2
L
Manchester City
5
Arsenal
0
W
Arsenal
1
Norwich City
0
W
Burnley
0
Arsenal
1
L
Arsenal
3
Tottenham Hotspur
1
W
Brighton & Hove Albion
0
Arsenal
0
D
Arsenal
2
Crystal Palace
2
D
和
-- Arsenal's Away W,L and D results
select t1.team_name hometeam, m.home_score, t2.team_name awayteam, m.away_score,
CASE WHEN m.away_score > m.home_score THEN 'W'
WHEN m.away_score < m.home_score THEN 'L'
WHEN m.away_score = m.home_score THEN 'D'
END AS results
from matches m
join teams t1 on m.home_team_id = t1.team_id
join teams t2 on m.away_team_id = t2.team_id
where m.home_team_id = '21' or m.away_team_id = 21;
结果:(主场赢显示为输,主场输显示为赢)
HomeT
HS
AwayT
AS
results
Brentford
2
Arsenal
0
L
Arsenal
0
Chelsea
2
W
Manchester City
5
Arsenal
0
L
Arsenal
1
Norwich City
0
L
Burnley
0
Arsenal
1
W
Arsenal
3
Tottenham Hotspur
1
L
Brighton & Hove Albion
0
Arsenal
0
D
Arsenal
2
Crystal Palace
2
D
在此先感谢那些愿意提供帮助的人。
此致。
这是您要找的吗?
select t1.team_name hometeam, m.home_score, t2.team_name awayteam, m.away_score,
CASE WHEN (m.home_team_id = 21 and m.home_score > m.away_score) or (m.away_team_id = 21 and m.home_score < m.away_score) THEN 'W'
WHEN (m.home_team_id = 21 and m.home_score < m.away_score) or (m.away_team_id = 21 and m.home_score > m.away_score) THEN 'L'
WHEN m.home_score = m.away_score THEN 'D'
END AS results
from matches m
join teams t1 on m.home_team_id = t1.team_id
join teams t2 on m.away_team_id = t2.team_id
where m.home_team_id = 21 or m.away_team_id = 21;
尽管我之前的 post 部分正确,但我创建这个 post 并没有得到我想要的确切结果。
我无法得到正确的答案我想根据主客场的结果找到 team_id 球队的胜负和平局。我创建的查询总是显示主队胜、负和平局,而不考虑 team_id。如何正确查询输入team_id指定球队的主客场胜负平局?
我的 table 结构是;
团队 table 字段:team_id、team_name 联赛 table 字段:league_id、league_name 匹配 table 字段:match_id、match_date、home_team_id、a.team_id、home_score、away_score、league_id
而且我无法合并这两个查询。我认为如果两个查询都可以合并,它将给出我预期的结果。
错误的工作查询是:
-- Arsenal's Home W,L and D results query
select t1.team_name hometeam, m.home_score, t2.team_name awayteam, m.away_score,
CASE WHEN m.home_score > m.away_score THEN 'W'
WHEN m.home_score < m.away_score THEN 'L'
WHEN m.home_score = m.away_score THEN 'D'
END AS results
from matches m
join teams t1 on m.home_team_id = t1.team_id
join teams t2 on m.away_team_id = t2.team_id
where m.home_team_id = '21' or m.away_team_id = 21;
结果:(客场赢显示为输,客场输显示为赢)
HomeT | HS | AwayT | AS | results |
---|---|---|---|---|
Brentford | 2 | Arsenal | 0 | W |
Arsenal | 0 | Chelsea | 2 | L |
Manchester City | 5 | Arsenal | 0 | W |
Arsenal | 1 | Norwich City | 0 | W |
Burnley | 0 | Arsenal | 1 | L |
Arsenal | 3 | Tottenham Hotspur | 1 | W |
Brighton & Hove Albion | 0 | Arsenal | 0 | D |
Arsenal | 2 | Crystal Palace | 2 | D |
和
-- Arsenal's Away W,L and D results
select t1.team_name hometeam, m.home_score, t2.team_name awayteam, m.away_score,
CASE WHEN m.away_score > m.home_score THEN 'W'
WHEN m.away_score < m.home_score THEN 'L'
WHEN m.away_score = m.home_score THEN 'D'
END AS results
from matches m
join teams t1 on m.home_team_id = t1.team_id
join teams t2 on m.away_team_id = t2.team_id
where m.home_team_id = '21' or m.away_team_id = 21;
结果:(主场赢显示为输,主场输显示为赢)
HomeT | HS | AwayT | AS | results |
---|---|---|---|---|
Brentford | 2 | Arsenal | 0 | L |
Arsenal | 0 | Chelsea | 2 | W |
Manchester City | 5 | Arsenal | 0 | L |
Arsenal | 1 | Norwich City | 0 | L |
Burnley | 0 | Arsenal | 1 | W |
Arsenal | 3 | Tottenham Hotspur | 1 | L |
Brighton & Hove Albion | 0 | Arsenal | 0 | D |
Arsenal | 2 | Crystal Palace | 2 | D |
在此先感谢那些愿意提供帮助的人。
此致。
这是您要找的吗?
select t1.team_name hometeam, m.home_score, t2.team_name awayteam, m.away_score,
CASE WHEN (m.home_team_id = 21 and m.home_score > m.away_score) or (m.away_team_id = 21 and m.home_score < m.away_score) THEN 'W'
WHEN (m.home_team_id = 21 and m.home_score < m.away_score) or (m.away_team_id = 21 and m.home_score > m.away_score) THEN 'L'
WHEN m.home_score = m.away_score THEN 'D'
END AS results
from matches m
join teams t1 on m.home_team_id = t1.team_id
join teams t2 on m.away_team_id = t2.team_id
where m.home_team_id = 21 or m.away_team_id = 21;