簡體   English   中英

如何與 MySql 中的兩個查詢合並?

[英]How to merge with two queries in MySql?

盡管我之前的帖子部分正確,但我創建了這篇帖子,但並沒有得到我想要的確切結果。

我無法得到正確的答案 我想根據主客場結果來查找其 team_id 的球隊的勝負平局。 我創建的查詢總是顯示主隊的勝負和平局,而不管 team_id 是什么。 如何正確查詢輸入team_id指定球隊的主客場勝負平局?

我的表格結構是;

球隊表字段:team_id,team_name 聯賽表字段:league_id,league_name 匹配表字段: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;

結果:(客場勝利顯示為輸,客場輸球顯示為勝利)

家T HS 離開T 作為 結果
布倫特福德 2 兵工廠 0 W
兵工廠 0 切爾西 2 大號
曼徹斯特城 5 兵工廠 0 W
兵工廠 1 諾維奇城 0 W
伯恩利 0 兵工廠 1 大號
兵工廠 3 托特納姆熱刺足球俱樂部 1 W
布萊頓霍夫阿爾比恩 0 兵工廠 0 D
兵工廠 2 水晶皇宮 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;

結果:(主場勝利顯示為輸,主場失利顯示為勝利)

家T HS 離開T 作為 結果
布倫特福德 2 兵工廠 0 大號
兵工廠 0 切爾西 2 W
曼徹斯特城 5 兵工廠 0 大號
兵工廠 1 諾維奇城 0 大號
伯恩利 0 兵工廠 1 W
兵工廠 3 托特納姆熱刺足球俱樂部 1 大號
布萊頓霍夫阿爾比恩 0 兵工廠 0 D
兵工廠 2 水晶皇宮 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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM