我想从表中选择一个值,其中where子句在2个条件下。
select a.value1
b.value2
c.value3
from a,b,c
where
a.header_id = b.header_id
and b.line_id = c.line_id(+)
如果c.line_id不为null,我有更多where子句,如
c.active = 'Y'
c.active_date > sysdate
任何想法,如何使这个陈述发挥作用?
答案 0 :(得分:4)
使这个语句有效的最好方法是使用ANSI连接重写它:
SELECT
a.value1
, b.value2
, c.value3
FROM a
JOIN b ON a.header_id = b.header_id
LEFT OUTER JOIN c ON b.line_id = c.line_id
现在毫无疑问,附加条件的位置 - 因为它仅适用于c
非空的行,您将其添加到ON
子句:
SELECT
a.value1
, b.value2
, c.value3
FROM a
JOIN b ON a.header_id = b.header_id
LEFT OUTER JOIN c ON b.line_id = c.line_id
AND c.active = 'Y'
AND c.active_date > sysdate