2009-07-22 6 views
2
select a,last_note_user,c,d,iso_src 
from X,Y,Z 
left outer join W 
ON (W.last_note_user=Z.userid AND W.user_ten=Y.iso_src) 

quand je suis exécution de la requête au-dessus me donne l'erreur "Y.iso_src" is a invalid identifier .Cependant, Y.iso_src est un identifiant valide et il existe dans le tableau du système. Quelque chose ne va pas avec la jointure externe gauche ci-dessus ?? S'il vous plaît aidez-moi !!!Oracle gauche requête de jointure externe

Répondre

10

Vous ne pouvez pas mélanger les syntaxes JOIN dans Oracle de cette façon.

Une condition JOIN peut uniquement référencer des tables précédemment jointes à l'aide de la syntaxe ANSI JOIN.

Utilisez ceci:

SELECT a, last_note_user, c, d, iso_src 
FROM X 
CROSS JOIN 
     Y 
CROSS JOIN 
     Z 
LEFT OUTER JOIN 
     W 
ON  W.last_note_user = Z.userid 
     AND W.user_ten = Y.iso_src 
+2

pourquoi pas? cela fonctionne bien sur mon instance 11g: select * à partir de dual x, dual y à gauche join double z sur (y.dummy = z.dummy) –

+0

@Jeffrey: essayez la même chose avec 'select * de dual x, double y jointure double dual z on (z.dummy = x.dummy) ' – Quassnoi

1

Il est probablement une bonne habitude de ne pas mélanger ANSI et non-ANSI syntaxe de jointure que les autres réponses indiquent. Cependant, il est techniquement possible, en isolant les jointures non-ANSI dans une sous-requête:

create table X as (select dummy a, dummy c, dummy d from dual); 

create table Y as (select dummy iso_src from dual); 

create table Z as (select dummy userid from dual); 

create table W as (select dummy last_note_user, dummy user_ten from dual); 

select a,last_note_user,c,d,iso_src 
from (select a, c, d, iso_src, userid FROM X,Y,Z) xyz 
left outer join W 
ON (W.last_note_user=xyz.userid AND W.user_ten=xyz.iso_src); 

A LAST_NOTE_USER C D ISO_SRC 
- -------------- - - ------- 
X X    X X X  

1 rows selected 
Questions connexes