2012-04-24 18 views
2

即使未從ALLOCATION表中的任何行調用它,我仍需要以下代碼才能顯示AUTHOR表中的行。目前,該代碼顯示具有適當外鍵數據的所有ALLOCATION行。我需要它,以便AUTHOR表中的所有行都顯示出來,即使它們沒有對應的ALLOCATION行。在子表中沒有行的SQL SELECT外鍵行

SELECT authid,sname,fname,B.bid 
FROM ALLOCATION A 
INNER JOIN BOOK B 
ON A.bid = B.bid 
INNER JOIN AUTHOR U 
ON A.authid = U.authid 
ORDER BY authid; 

也就是說,AUTHOR表中的某些行是ALLOCATION表中行的外鍵0。我需要他們在SELECT中出現。 authid,sname和fname是AUTHOR表的列。

回答

2
select authid, 
    sname, 
    fname, 
    B.bid 
from AUTHOR U 
left outer join ALLOCATION A on A.authid = U.authid 
left outer join BOOK B on A.bid = B.bid 
order by authid 
2

你想使用一種叫做outer join的東西。

而不是INNER,比如LEFT OUTERRIGHT OUTER,這取決於方向。

這是幹什麼的,如果在另一個表中沒有對應的記錄,那麼這些列將被填充爲null。