【发布时间】:2015-02-14 20:57:37
【问题描述】:
TableA:
+------+------+---------+
| A_Id | B_Id | AValue |
+------+------+---------+
TableB:
+------+------+------+
| B_Id | A_Id | C_Id |
+------+------+------+
TableC:
+------+------+------+---------+
| C_Id | B_Id | D_Id | CValue |
+------+------+------+---------+
TableD:
+------+---------+
| D_Id | DValue |
+------+---------+
SELECT AValue, CValue, Dvalue
FROM TableA
inner JOIN TableB
ON TableA.A_Id = TableB.A_Id
inner JOIN TableC
ON TableB.B_Id=TableC.B_Id;
inner JOIN TableD
ON TableC.D_Id=TableD.D_Id;
但是,这并没有提供我需要的 DValue 列,而只是提供了 AValue 和 CValue 列。我需要所有三列。我该怎么做呢?
【问题讨论】:
-
您的查询看起来没问题。
-
为什么
TableB有一个C_Id和TableC有一个D_Id?这似乎是错误的。 -
请使用示例数据和所需结果编辑您的问题。 SQL Fiddle 也很有帮助。
-
如果
TableD中有对应的DValue则显示。否则 INNER JOIN 将根本不返回任何行。只有 LEFT JOIN 可以返回AValue和CValue,但不能返回DValue。 -
如果
DVALUE为NULL,我认为您会得到您报告的结果的唯一方法是。会是这样吗?
标签: sql oracle inner-join