關于這個資料庫https://www.kaggle.com/hugomathien/soccer ,我需要 SQL 方面的幫助。我需要一個 SQL 陳述句,它給出一個隨機游戲的主隊名稱和客隊名稱表(我選擇 Match.match_api_id = 492476)如果我運行這個:
SELECT Team.team_long_name , Match.home_team_api_id
FROM Team JOIN Match
ON Match.away_team_api_id = Team.team_api_id
WHERE Match.match_api_id = 492476;
我得到了客隊名稱,但沒有得到主隊名稱(相反,我得到了 Match.home_team_api_id 的值,正如預期的那樣)。如果我運行:
SELECT Team.team_long_name , Match.away_team_api_id
FROM Team JOIN Match
ON Match.home_team_api_id = Team.team_api_id
WHERE Match.match_api_id = 492476;
我得到了主隊名稱,但沒有得到客隊名稱(相反,我得到了 Match.away_team_api_id 的值,正如預期的那樣)。問題是外鍵 Match.home_team_api_id 和 Match.away_team_api_id 都對應于: Team.team_api_id ,所以當我得到一個時,我“失去”了另一個。
是否有SQL陳述句可以在同一張表中同時獲取隨機比賽的主隊名稱和客隊名稱?
uj5u.com熱心網友回復:
首先,如果選擇標準只是關于Match表,它應該是你提到的第一個表。
其次,您可以多次使用JOIN(或INNER JOIN更常見的說法)。
SELECT T1.team_long_name as Away_team_long_name,
T2.team_long_name as Home_team_long_name
FROM Match
INNER JOIN Team as T1
ON Match.away_team_api_id = T1.team_api_id
INNER JOIN Team as T2
ON Match.home_team_api_id = T2.team_api_id
WHERE Match.match_api_id = 492476;
將其改寫為人工程式:
- 使用
match_api_id查找表Match中的行Match。 away_team_api_id從行中取出Match并使用它來查找Team表中的團隊。將該球隊的名字報告team_long_name為客隊球隊的全名。home_team_api_id從行中取出Match并使用它來查找Team表中的團隊。報告該team_long_name團隊作為主隊長名稱。
uj5u.com熱心網友回復:
您可以參加Team兩次,一次是客隊,一次是主隊。表的別名有助于跟蹤哪個是哪個。就像是:
SELECT
hometeam.team_long_name homename,
Match.home_team_api_id,
awayteam.team_long_name awayname,
Match.away_team_api_id
FROM Match INNER JOIN Team hometeam
ON Match.home_team_api_id = hometeam.team_api_id
INNER JOIN Team awayteam
ON Match.away_team_api_id = awayteam.team_api_id
WHERE Match.match_api_id = 492476
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/476559.html
標籤:sql
下一篇:查找特定輸出的SQL查詢
