Salut à tous
Je travail sur Oracle 9i. J'ai la structure de table suivante :
create table table1 (
ID integer not null
);
create table table2 (
ID1 integer not null,
ID2 integer not null
);
insert into table1 values (1);
insert into table1 values (2);
insert into table1 values (3);
insert into table2 values (1,10);
insert into table2 values (1,20);
insert into table2 values (2,30);
Pas compliqué, hein ?
J'essaie d'executer la requete suivante :
select id from table1,
(select id1 from table2 where id2 = 10000) a1,
(select id1 from table2 where id2 = 10) b1
where id = a1.id1 OR id = b1.id1;
Et ca ne me ramene rien. Peanuts. Nada. No rows returned. Alors que je m'attendrais à avoir 1 row, puisque j'ai utilisé un OR. Donc même si la clause "a1" ne retourne rien, je devrais quand même avec les ID de table1 qui sont égales à "b1".
Attention, je sais très bien que je pourrais structurer ma requête SQL différemment, mais ce n'est pas mon but, je veux qu'elle soit comme ça, et pas autrement, pour des questions de performances sur mon application réelle.
Si je fais :
select id from table1,
(select id1 from table2 where id2 = 30) a1,
(select id1 from table2 where id2 = 10) b1
where id = a1.id1 OR id = b1.id1;
Là j'ai bien quelque chose (1 et 2); en fait rien n'est retourné à partir du moment ou un de mes select imbriqués ne ramène rien. Si les 2 ramènent quelque chose, le OR fonctionne bien.
Quelqu'un a une idée pour contourner ce problème ("select null from dual" ?) parce que là je sèche vraiment.
Merci !
Partager