【发布时间】:2013-02-28 16:43:15
【问题描述】:
我有三个表 A B 和 C (最后一个是我想要的结果)
A.id B.age C.id C.age result id age
1 5 1 5 1 5
2 6 2 0 null null
3 7 0 7 null null
4 8 4 8 4 8
5 9 5 9 5 9
我想做一个从 A 和 B 到 C 的外部连接,这样我就得到了上面的结果。 如果 C 中缺少任何一列,它应该产生 null。 如果我进行内部连接:
select a.id, b.age where a.id = c.id and b.age = c.age
我会取回 3 行。 我还想要 5 行回来。我正在使用 IBM db2 v9 的东西。 我试图弄清楚如何使用较新的左外连接语法来实现它,但我没有看到它。 我可以看到如何在旧的 sybase *= 外连接语法中做到这一点,但我看不到如何以新的方式做到这一点。 这甚至可能吗?
有人建议将每个结果的一半合并。在我看来,工会只会弄得一团糟,我应该能够从两个表中进行左外连接。
帮助? 谢谢。
【问题讨论】:
-
你在用什么RDBMS?
RDBMS代表关系数据库管理系统。RDBMS is the basis for SQL,适用于所有现代数据库系统,如 MS SQL Server、IBM DB2、Oracle、MySQL 等... -
ibm db2。我认为这是第 9 版。
-
...你为什么想要空值?他们并没有真正告诉你任何有用的信息。
-
因为这是我实际所做的一个非常简化的示例。在我实际执行的更大查询的结果集中还有其他有用的信息。
-
我知道唯一可行的方法是将 a+b 转换为派生表,然后我可以在 ab 和 c 之间进行左外连接。但在现实世界的情况下,a 和 b 都已经是非常复杂的派生表。我希望我缺少一个 sql 语法。
标签: sql db2 outer-join