PDA

View Full Version : SQL und AS/400 JOIN



HoScHiE
10-07-01, 10:45
Hallo,

ich versuche gerade ein Feld1 aus Datei1 mit dem Feld1 ais Datei2 in SQL zu updaten.
Also t01.Feld1 = t02.Feld1 ...

aber ich muss die beiden joinen über feld3.

also where t01.feld3 = t02.feld3 !!!

Nun habe ich mehrere Sachen ausprobiert aber es funktioniert nicht mit Join.

mit "update t01 set feld1 = (Select .... where feld3 = feld3) klappt es auch nicht 100% da er dann einen Fehler mit Nullsätze hat.

Per ODBC - ACCESS funktioniert es ... aber es muss doch auch per DB2 SQL gehen oder.

Was ich will:
ICh will einfach die Euro werte aus t01 mit dem Euro Werten aus t02. tauschen aber nur für das Jahr 01 aus t01 und t02... so ungefäir.

Danke

torsten
10-07-01, 12:04
Das war so schon richtig, hänge aber noch

... where exists(>deine Joinbedingung<) an die Abfrage dran, um zu verhindern, daß bei nicht-paarigen Sätzen NULL zurückgegeben wird.

Gruß

Torsten

torsten
10-07-01, 12:19
Hoppla,

im exists muß vor der Joinbedingung natürlich auch noch ein Wert zurückgegeben werden : where exists( select feld from where <Joinbedingung> ).

HoScHiE
10-07-01, 14:43
ÄHm ... das habe ich nicht so ganz verstanden.

Das mit dem Where exists klings logisch aber ich habe doch die Join bedingung im 2.select schon drin ???

Kannst du mir ein kurzes Beispiel geben. ?==
Danke

torsten
11-07-01, 07:57
z. B.

UPDATE t1 SET f1 = (select f2 from t2 where
t2.f3 = t1.f4)
WHERE exists(select f2 from t2 where
t2.f3 = t1.f4)

f3 und f4 sind die JoinFelder aus beiden Tabellen, f1 das upzudatende (!) Feld und f2
der Inhalt aus der zweiten Tabelle mit dem neuen Feldinhalt für f1.
Findet die erste Unterabfrage keinen passenden Satz in Tabelle t2, wird NULL als Ergebnis zurückgeliefert, deshalb schließt die 2. Unterabfrage entsprechende Ergebnisse aus, und es wird nicht versucht f1 (nicht nullfähig ) zu ändern.

Gruß

Torsten