OÙ conditions sous_requête tout en utilisant jointures ANSI
Question
Pourquoi ça ne marche pas?
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual WHERE 1=1) b
ON (1=1);
Je reçois "ORA-00900: instruction SQL non valide". Est-il possible d'utiliser la clause WHERE à l'intérieur du sous-requête?
Edit: Version 9.2
SELECT *
FROM v$version
Oracle9i Enterprise Edition de presse 9.2.0.8.0 - Production 64bit
Les suivants se exécute très bien:
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual /*WHERE 1=1*/) b
ON (1=1)
La solution
Il fonctionne pour moi sur 9.2 (version 32 bits est la seule différence):
SQL> SELECT a.*
2 FROM dual a
3 JOIN (SELECT * FROM dual WHERE 1=1) b
4 ON (1=1);
D
-
X
SQL> quit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
Autres conseils
Quelle version utilisez-vous?
L'exacte même SQL fonctionne bien pour moi (Oracle Database 10g Express Edition de presse 10.2.0.1.0).
Oracle ci-dessous 9i
ne prend pas en charge ANSI
syntaxe de jointure.
Utilisez cette option si vous êtes sur 8i
et ci-dessous:
SELECT a.*
FROM dual a,
(
SELECT *
FROM dual
WHERE 1 = 1
) b
WHERE 1 = 1
Il semble correct pour moi et je suis en mesure d'exécuter dans 10g, mais il échoue avec 8i, version d'Oracle utilisez-vous?