Согласно http://www.orafaq.com/node/855 Запись в этой таблице для "Incomplete Join Trail"
Неправильный способ кодирования:
select *
from T1, T2, T3, T4
where T1.C1 = T2.C1(+)
and T2.C2 = T3.C2(+)
and T3.C3 = T4.C3;
Правильный способ кодирования:
select *
from T1, T2, T3, T4
where T1.C1 = T2.C1(+)
and T2.C2 = T3.C2(+)
and T3.C3 = T4.C3(+);
Это я не мог понять.Существует вероятность, что я мог бы сделать равное соединение T3 и T4 и внешнее соединение между другими таблицами.Почему автор говорит, что это неверно?
В соответствии с http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:5229892958977,
Том использует в своем ответе следующий пример, который кажется похожим на приведенный выше пример «Незавершенного соединения»
select *
from t1,t2,t3
where t1.x = t2.x and t2.y = t3.y(+);
Может ли кто-нибудь помочь мне понять это?
Редактировать:
Пожалуйста, исправьте меня, если я ошибаюсь.Согласно ответу Аллана, следующий код будет правильным:
select *
from T1, T2, T3, T4
where T3.C3 = T4.C3
and T1.C1 = T2.C1(+)
and T2.C2 = T3.C2(+);
Если вышеприведенное верно, будет ли это эквивалентно следующему цитируемому ответу? [Т.е., можем ли мы сделать это в sql оракула безподзапрос в цитируемом ответе?]
SELECT *
FROM t1, t2, (SELECT *
FROM t3, t4
WHERE t3.c3 = t4.c3) t3_4
WHERE t1.c1 = t2.c1(+) AND t2.c2 = t3_4.c2(+);