如何合并 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;