2009-10-23 63 views
0

我需要将我的查询转换为经典的Oracle连接语法,因为我需要将它放在物化视图中。不过,我不太清楚如何做到这一点:外部连接经典的Oracle连接语法

SELECT * FROM transactions t 
LEFT JOIN transac_detail td1 ON (t.id = t1.trans_id AND t.ttype = 'VOICE') 
LEFT JOIN transac_detail td2 ON (t.id = t2.trans_id AND t.ttype = 'BROADBAND'); 

我开始写这样的:

SELECT * FROM transactions t, transac_detail td1, transac_detail td2 
WHERE t.id = t1.trans_id(+) AND t.id = t2.trans_id(+) 

但我怎么能包括“文字”的条件?

+1

我认为物化视图不会接受现代ISO连接符号似乎不太可能。你确定有必要吗?这似乎是一个非常意想不到的限制 - 只有当Oracle无意支持未来的实体化观点时才会这样做。 – 2009-10-23 02:14:08

回答

0

原来的查询困惑。你的意思是?

SELECT t.* FROM transactions t, transac_detail td1 
WHERE t.id = td1.trans_id(+) 
and t.ttype = 'VOICE' 
union 
SELECT t.* FROM transactions t, transac_detail td2 
WHERE t.id = td2.trans_id(+) 
and t.ttype = 'BROADBAND' 
+0

最初的查询来自事务和两组transac_detail;你的只有一个transac_detail - 所以结果肯定不一样。这可能是可以接受的,但我不确定应该给出这个问题。 – 2009-10-23 02:12:14