假设我有三个表:
1. TableA with columns TableAID (PK), Desc Nullable
2. TableB with columns TableBID (PK), TableAID(FK) Nullable
3. TableC with columns TableCID (PK), TableBID (FK) Nullable,
TableAID (FK) Nullable, Start_Date, End_Date
如果 TableC.TableBID 不为空,我需要返回表 A 中的 Desc 然后使用 TableB 中的 TableAID(FK) 来检索 Desc 否则使用 TableC 中的 TableAID (FK) 来检索 Desc
注意:TableC.TableBID 或 TableC.TableAID 都可能为空。在所有情况下,我仍然必须能够返回 TableC 中的其他列。
这是我的代码:
Select ta.desc, tc.start_date, tc.end_date
from TableC tc
Left outer join TableB tb
on case
when tc.TableBID is not null then (
tc.TableBID = tb.TableBID
Left outer join TableA ta
on tb.TableAID = ta.TableAID
--my concern here is that tb.TableAID can be null. Will it still work?
)
else tc.TableAID = ta.TableAID --my concern here is that tc.TableAID can be null.
--WIll it still work?
我也关心语法。如果有更好的有条件加入的方法,请告知。我正在使用甲骨文。此代码将进入一个视图,该视图将用于搜索过程(这就是为什么它必须返回所有内容而不考虑空值)。谢谢你的帮助。