【发布时间】:2012-08-31 02:23:57
【问题描述】:
select
whatever
from
bank_accs b1,
bank_accs b2,
table3 t3
where
t3.bank_acc_id = t1.bank_acc_id and
b2.bank_acc_number = b1.bank_acc_number and
b2.currency_code(+) = t3.buy_currency and
trunc(sysdate) between nvl(b2.start_date, trunc(sysdate)) and nvl(b2.end_date, trunc(sysdate));
我的问题在于 b2 上的日期(实际情况)检查。现在,我需要为每个 t3xb1 返回一行(当然,t3 = ~10 个加入的表),即使 b2 中只有无效记录(按日期)。我如何正确地外部加入这个位? 不能使用 ANSI 连接,必须在单个平面查询中使用。 谢谢。
【问题讨论】:
-
为什么不能使用显式连接?您仍然可以在一个查询中完成。没有理由永远不能使用它们。事实上,你永远不应该使用隐式连接,因为它已经过时了 20 年。
-
使用显式 ansi
JOINs 的查询仍然是“单个平面查询”