im ayant un petit problème de syntaxe dans ma requête (simplifiée):Oracle join En utilisant + sous-requête: string ora-00904: identifiant invalide
select *
from table1 t1
inner join table2 t2 using (pk1)
inner join table3 t3 using (pk2)
where not exists (select1 from table4 t4 where t4.pk1 = t1.pk1)
En utilisant le "en utilisant" mot-clé, Oracle ne marche pas permettre l'identificateur de table devant le nom de la colonne (par exemple: t1.pk1, ne PK1 peut être utilisé)
Si j'écris:
select *
from table1 t1
inner join table2 t2 using (pk1)
inner join table3 t3 using (pk2)
where not exists (select1 from table4 t4 where t4.pk1 = pk1)
Cette requête ne donnera pas les résultats escomptés.
Mais puisque j'utilise une sous-requête "exists", comment puis-je rejoindre cette sous-requête?
Bien sûr, je suppose que je pourrais écrire cette requête d'une autre manière et éviter l'existence, ou je ne pouvais pas utiliser "using".
Mais est-il possible d'avoir "join/using" combiné avec une sous-requête dans la clause where?
Edit: en utilisant Oracle 10gR2
En effet, c'est la seule façon de le faire sans éviter d'utiliser entièrement (Personnellement, je préfère coller à JOIN..ON plutôt que d'utiliser). –