А с соединениями без тестовой таблички лично у меня выходит бред. Чего-то там оптимизируется слишком, и одна строка вообще без значений ID получается.
Присоединен к:
Oracle Database 11g Release 11.2.0.1.0 - Production
SQL> with t as (select 1 id, level ver from dual connect by level <= 6)
2 select t1.id id1, t1.id id2, t1.ver ver1, t2.ver ver2
3 from t t1, t t2
4 where t1.id = 1
5 and t1.id = t2.id (+) and t1.ver - 1 = t2.ver (+)
6 ;
ID1 ID2 VER1 VER2
---------- ---------- ---------- ----------
1
1 1 2 1
1 1 3 2
1 1 4 3
1 1 5 4
1 1 6 5
6 строк выбрано.
SQL> with t as (select 1 id, level ver from dual connect by level <= 6)
2 select t1.id id1, t1.id id2, t1.ver ver1, t2.ver ver2
3 from t t1 left join t t2 on t1.id = t2.id and t1.ver = t2.ver + 1
4 where t1.id = 1;
ID1 ID2 VER1 VER2
---------- ---------- ---------- ----------
1
1 1 2 1
1 1 3 2
1 1 4 3
1 1 5 4
1 1 6 5
6 строк выбрано.
SQL>
Зато с тестовой табличкой всё отлично.
create table test as select 1 id, level ver from dual connect by level <= 6;
select t1.id id1, t1.id id2, t1.ver ver1, t2.ver ver2
from test t1 left join test t2 on t1.id = t2.id and t1.ver = t2.ver + 1
where t1.id = 1;
select t1.id id1, t1.id id2, t1.ver ver1, t2.ver ver2
from test t1, test t2
where t1.id = 1
and t1.id = t2.id (+) and t1.ver - 1 = t2.ver (+)
;
-------------------------------------------------------
When I say "RTFM" or "STFF" or "STFW",
the third letter means "Following" or "Fine"...