PDA

View Full Version : Daten von iSeries übertragen; "Join"-Anweisung ?



c.b.
03-07-09, 09:14
hallo,
ich möchte daten aus einer datei von der iseries übertragen und falls in einer zweiten datei, über einen passenden key, daten dazu vorhanden sind, diese ergänzen; d.h. NICHT wenn nur in beiden dateien vorhanden.
beispiel: kundenstammdatei mit 10 sätzen; lieferanschriftendatei mit 5 sätzen ===> ich möchte alle 10 sätze ausgeben, und bei den 5 mit lieferanschrift zusätzlich die lieferanschrift. wie bekommt man das hin ? bisher erhalte ich immer nur die 5 sätze die wirklich übereinstimmen. kann man bei "join" auch nochmal "where" angeben ?
und jaaaa, ich hab's auch schon mit dem haken bei "sätze mit fehlenden feldern zurückgeben" probiert; ohne erfolg.

danke schonmal für die antworten
(und es brennt nicht, reicht also auch noch nächste woche !)

deshalb schonmal ein schönes WE

christian

Fuerchau
03-07-09, 09:55
Left join (Sätze mit fehlenden Werten = NULL) ist korrekt.

Aber:
Sobald du in der Where-Klausel Felder der gejointen Tabelle ansprichst, machst du automatisch einen "inner join" daraus.

In der Where-Klausel müsstest du z.B.
a) ... (MyField is null or myField <> 0) ..
b) coalesce(MyField, 0) <> 0
verwenden.

Pikachu
03-07-09, 09:59
Mit SQL eine Sicht anlegen:

CREATE VIEW Bibliothek/Name AS
SELECT Felder FROM Kunden
LEFT OUTER JOIN Anschriften
ON K1=A1 AND K2=A2

Und dann aus dieser Sicht die Sätze auslesen und übertragen.