2012-04-24 17 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 OUTERまたはRIGHT OUTERとなります。

これは、対応するレコードが他のテーブルにない場合、列がNULLで埋められることです。

関連する問題