我不确定如何描述我的表结构,所以希望这是有道理的......
我有 3 个层次关系表,使得 A 与 B 具有一对多关系,而 B 又与 C 具有一对多关系。诀窍是 B 和 C 中的外键允许为空(即没有父定义)。我也有与 A、B 或 C 无关的 D 和 E(直接)。
最后,我有 F,它是一个与 C、D 和 E 具有多对一关系的连接表。它的所有字段(其他表的 FK)都不能为空。
我想编写一个 SQL 语句,将所有表连接到一个结果集中。我知道我必须使用外部联接,因为我希望返回所有 A,无论它在 B 中是否有子节点,并且与 B 和 C 类似。
问题一:我一直在看ANSI外连接语法(我之前只用过Oracle“(+)”),找不到外连接超过2个表的例子。有人可以提供/指向一个例子吗?
问题二:是否可以基于连接表F包含来自表D和E的记录?如果是这样,这是通过外部连接完成的吗?
谢谢!
编辑
当然,在我发布这个之后,我找到了一个回答问题 1 的示例。但是,问题 2 仍然让我难过。
例子:
SELECT A.a,
B.b,
C.c
FROM A
FULL OUTER JOIN B ON B.a = A.a
FULL OUTER JOIN C ON C.b = B.b