我一直有麻煩理解這個例子,我有答案,但我有麻煩包裝我的頭周圍如何工作。聯接如何工作?SQL加入和左外部加入
檢查PLAYER和TEAM表的結構:
PLAYER
-------------
PLAYER_ID NUMBER(9) PK
LAST_NAME VARCHAR2(25)
FIRST_NAME VARCHAR2(25)
TEAM_ID NUMBER
MANAGER_ID NUMBER(9)
TEAM
----------
TEAM_ID NUMBER PK
TEAM_NAME VARCHAR2(30)
在這個例子中,團隊經理也播放器,以及MANAGER_ID
列引用PLAYER_ID
列。對於經理人員,MANAGER_ID
是NULL
。
哪個SELECT
聲明將提供所有球員的列表,包括球員的姓名,球隊名稱和球員的經理姓名?
答:
SELECT p.last_name, p.first_name, m.last_name, m.first_name, t.team_name
FROM player p
LEFT OUTER JOIN player m ON (p.manager_id = m.player_id)
LEFT OUTER JOIN team t ON (p.team_id = t.team_id);
要說明這一點,最好的方法是從字面上繪製您的表格的圖片。一個在左邊,一個在右邊。箭頭指向哪個方向?這就是你的加入將起作用的方式。您將獲得「左側的所有記錄」或「右側的所有記錄」。 – durbnpoisn