我是 SQL 世界的新手。我想用列中的相應條目替換Games.home_team_idand 。Games.away_team_idTeams.name
首先,我從初始化一個小資料表開始:
CREATE TABLE Games (id,away_team_id INT,away_team_score INT,home_team_id INT, home_team_score INT);
創建表
插入游戲(id、away_team_id、away_team_score、home_team_id、home_team_score)
價值觀
(1,1,1,2,4),
(2,1,3,3,2),
(3,1,1,4,1),
(4,2,0,3,2),
(5,2,3,4,1),
(6,3,5,4,2)
;
插入 0 6
然后我創建一個參考表的模板
CREATE TABLE Teams (id INT, name VARCHAR(63);
創建表
插入團隊(ID、名稱)
價值觀
(1, 'Oogabooga FC'),
(2, 'FC Milawnchair'),
(3,“羅恩的足球聯隊”),
(4,“塔城足球俱樂部”)
;
插入 0 4
我想讓表格顯示為:
| 編號 | away_team_name | away_team_score | home_team_name | home_team_score |
----- ---------------- ----------------- --------- ------ --------
| 1 | 奧加布加足球俱樂部 | 1 | FC Milawnchair | 4 |
...
我設法得到一個連接查詢來顯示Teams.name該away_team_name欄位中的第一個值JOIN:
選擇
Games.id,
Teams.name AS away_team_name,
Games.away_team_score,
Teams.name 作為 home_team_name,
Games.home_team_score
來自游戲
加入團隊 Teams.id = Games.away_team_id
;
| 編號 | away_team_name | away_team_score | home_team_name | home_team_score |
----- ---------------- ----------------- --------- ------ --------
| 1 | 奧加布加足球俱樂部 | 1 | 奧加布加足球俱樂部 | 4 |
...
但是現在當我呼叫它兩次時我被卡住了,因為JOIN它顯示了錯誤:
選擇
Games.id,
Teams.name AS away_team_name,
Games.away_team_score,
Teams.name 作為 home_team_name,
Games.home_team_score
來自游戲
加入團隊 Teams.id = Games.away_team_id
加入團隊 Teams.id = Games.home_team_id
;
錯誤:多次指定表名“teams”
您如何在連接中兩次參考同一個表的同一列的相同參考?
uj5u.com熱心網友回復:
您需要為表的至少一個實體指定別名;最好兩者兼而有之。
SELECT
Games.id,
Away.name AS away_team_name,
Games.away_team_score,
Home.name AS home_team_name,
Games.home_team_score
FROM Games
JOIN Teams AS Away ON Away.id = Games.away_team_id
JOIN Teams AS Home ON Home.id = Games.home_team_id
說明:當您兩次加入同一個表時,DBMS(在您的情況下為 PostgreSQL)無法識別您在使用其欄位時參考的表;解決此問題的方法是為聯接表分配別名,就像為列分配別名一樣。SELECT通過這種方式,您可以在,JOIN和WHERE陳述句中指定要參考的連接實體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/453568.html
標籤:PostgreSQL 加入
