2

即使没有从 ALLOCATION 表中的任何行调用它们,我也需要以下代码来显示 AUTHOR 表中的行。目前,该代码显示所有具有适当外键数据的 ALLOCATION 行。我需要它来显示 AUTHOR 表中的所有行,即使它们没有相应的 ALLOCATION 行。

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 表的列。

4

2 回答 2

3

你想使用一种叫做外连接的东西。

而不是INNER, 说LEFT OUTERRIGHT OUTER, 取决于方向。

这样做是如果另一个表中没有相应的记录,则用 null 填充列。

于 2012-04-24T18:16:49.753 回答
3
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
于 2012-04-24T18:17:13.670 回答