web-dev-qa-db-fra.com

Même alias de table pour deux tables différentes (Oracle)

Cet exemple a le même alias de table utilisé pour deux tables différentes. Je ne comprends pas pourquoi cela est autorisé par Oracle, et s'il est permis, comment les résultats ont un sens.

create table Table_A (x number);
create table Table_B (x number);
insert into Table_A values (1);
insert into Table_A values (2);
insert into Table_B values (2);
insert into Table_B values (3);

select * from Table_A ;
         X
----------
         1
         2
2 rows selected.

select * from Table_B ;
         X
----------
         2
         3
2 rows selected.

select *
  from Table_A  T
  join Table_B  T
    on T.x = T.x;
         X          X
---------- ----------
         2          2
         2          2
         3          3
         3          3
4 rows selected.
5
Tom Warfield

Bug 25342699: Résultats erronés avec ANSI Jointure à l'aide des alias de table identiques

Le bogue est "toujours travaillé sur".

La solution de contournement est évidente: utilisez différents alias.

Joindre non-ANSI jette une erreur comme prévu.

Semble être fixé en 18.1 et 18.2.

3
Balazs Papp