pizzahouse
Goto Top

Left Join in Oracle

SQL Syntax in Oracle

I. Die folgende Abfrage:

SELECT * FROM tabelle1 t1 LEFT JOIN (tabelle2 t2, tabelle t3) ON (t2.spalte2=t1.spalte2 AND t2.spalte3=t3.spalte3) WHERE t1.spalte1='wert1'

II. ist eine theoretische Erweiterung von:

SELECT * FROM tabelle1 t1 LEFT JOIN tabelle2 t2 ON (t2.spalte2=t1.spalte2) WHERE t1.spalte1='wert1'


In Ausgabe von II. stehen in t2.spalte3 z.b. Usernamen, die in t3.spalte3 zu Realnamen aufgelöst werden sollen.


-->Oracle 9i - Fehler:
ORA-00907: missing right parenthesis


Als Oracle-Rookie seh´ ich da leider net durch, wo der Fehler ist, hat jmd einen Tipp?

Gruß,
PH.

Content-ID: 69371

Url: https://administrator.de/forum/left-join-in-oracle-69371.html

Ausgedruckt am: 23.12.2024 um 12:12 Uhr

Biber
Biber 24.09.2007 um 15:30:05 Uhr
Goto Top
Moin PizzaHouse,

SELECT * FROM tabelle1 t1 
 LEFT JOIN (tabelle2 t2 left join tabelle3 t3 ON t2.spalte3=t3.spalte3) 
           on t2.spalte2=t1.spalte2 
WHERE t1.spalte1='wert1'  

Gruß
Biber
PizzaHouse
PizzaHouse 25.09.2007 um 11:53:55 Uhr
Goto Top
hi biber,

super, vielen dank!

hab mich leider vertan, da fehlt noch eine Tabelle, wobei ich leider wieder über die Verschachtelung gestolpert bin.

SELECT * FROM tabelle1 t1
LEFT JOIN (tabelle t2 LEFT JOIN (tabelle3 t3 LEFT JOIN tabelle4 t4 ON t3.spalte3=t4.spalte3))
ON t2.spalte2=t1.spalte2
WHERE t1.spalte1='wert1'

ORA-00905: missing keyword
Biber
Biber 25.09.2007 um 14:31:34 Uhr
Goto Top
Moin PizzaHouse,

rein biooptisch gescannt sieht es von hier aus danach aus, dass tabelle t2 an einem LEFT JOIN beteiligt sein soll, ohne dass ein t2-Feld daran Anteil hat.
Es gibt keine logische Verbindung zwischen (Tabelle t1-joinedWith-t2) zu (t3 geJoint mit t4).

Schreib es um, dann siehst du es.
Select t1.* from tabelle1 t1, tabelle2 t2, tabelle3 t3,tabelle4 t4
Where t1.spalte2 = t2.Spalte2
AND   t3.spalte3 = t4.spalte3
AND t1.spalte1='wert';  
[das würde auch wirklich einem "INNER JOIN" entsprechen.]

Anders ausgedrückt: es fehlt eine komplette Zeile "...ON t2.feldx=t3.feldX"
SELECT * FROM tabelle1 t1 
LEFT JOIN (tabelle t2 LEFT JOIN (tabelle3 t3 LEFT JOIN tabelle4 t4 ON t3.spalte3=t4.spalte3))
ON t2.spalteX=t3.spalteX <---------------------die fehlt
ON t2.spalte2=t1.spalte2 
WHERE t1.spalte1='wert1'  
[hier müsste es aber "INNER JOIN" heißen, wenn "Inner Joins" gewollt sind
Aber Überschrift und Inhalt des Postings liefen halt von Anfang an auseinander.]

Grüße
Biber
PizzaHouse
PizzaHouse 26.09.2007 um 10:21:11 Uhr
Goto Top
klappt alles jetzt wunderbar, nochmal vielen dank!

seltsamer weise wollte die oracle abschließend die klammern nicht akzeptieren, ganz ohne hingegen ging´s. Oo