我一直有麻烦理解这个例子,我有答案,但我有麻烦包装我的头周围如何工作。联接如何工作?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