View Full Version : 2 Identische Tabellen vergleichen
CaddyMajor
19-12-11, 15:41
Hallo zusammen,
ich hoffe, ich sehe den Wald vor lauter Bäume nicht.
Ich habe hier 2 Tabellen, die von den Feldern (Bezeichnung, Größe etc.) identisch sind.
In Tabelle A ist ein alter Datenbestand drin, in Tabelle B wird der neue Datenbestand berechnet.
Nun möchte ich prüfen, ob es den Datensatz von B in A gibt (ok das ist einfach per Chain etc.) und ob sich, wenn es den Datensatz gibt, er sich inhaltlich geändert hat.
Ich könnte sicherlich jedes Feld für sich vergleichen, aber da müsste es doch eine bessere Methode geben oder?
Vielen Dank für eure Hilfe
Wenn die Strukturen der beiden Dateien ja komplett identisch sind kannst du die DS'n miteinander vergleichen:
FDATEI1 ....
FDATEI2 ...
IDSDAT1 E DSDATEI1
IDSDAT2 E DSDATEI2
ILERPG:
D DSDAT1 E DS EXTFILE(DATEI1)
D DSDAT1 E DS EXTFILE(DATEI2)
Nun kannst du nach dem Chain die direkt die DS'n miteinander vergleichen.
Ein Problem hast du, wenn die Feldnamen der beiden Dateien identisch sind.
Dann musst du für eine Datei die Felder mit I-Bestimmung umbenennen (RPG) oder in ILERPG per Qualified oder Prefix (F- und D-Bestimmungen) die Felder anders definieren.
Bei Namensgleichheit zerstört dir nämlich der 2. Chain den Inhalt der Felder aus dem 1. Chain.
Das folgende SQL Statement ermittelt alle Sätze, die unterschiedlich sind:
( Select * from OldTable
Except
Select * from NewTable)
Union
( Select * from NewTable
Except
Select * from OldTable)
Der erste Except ermittelt alle Datensätze, die in NewTable entweder nicht oder anders sind.
Der zweite Except ermittelt alle Datensätez, die in OldTable nicht oder anders sind.
Der Union mischt dann beide Ergebnisse zusammen und entfernt die Duplikate.
Birgitta
Bezüglich des "Except" bitte noch dazuschreiben:
Ab welchem Release ist das möglich!
KingofKning
19-12-11, 17:53
Das folgende SQL Statement ermittelt alle Sätze, die unterschiedlich sind:
( Select * from OldTable
Except
Select * from NewTable)
Union
( Select * from NewTable
Except
Select * from OldTable)Der erste Except ermittelt alle Datensätze, die in NewTable entweder nicht oder anders sind.
Der zweite Except ermittelt alle Datensätez, die in OldTable nicht oder anders sind.
Der Union mischt dann beide Ergebnisse zusammen und entfernt die Duplikate.
Birgitta
Wenn ich länger im englischsprachigen Ausland bin, träume ich ja auch in englisch. Die Frage die sich mir stellt: Hast Du schon mal in SQL geträumt?
GG
Bezüglich des "Except" bitte noch dazuschreiben:
Ab welchem Release ist das möglich!
Release V5R3M0
Birgitta
Wenn ich länger im englischsprachigen Ausland bin, träume ich ja auch in englisch. Die Frage die sich mir stellt: Hast Du schon mal in SQL geträumt?
GG
Bei mir wechselt sich die Träumerei zwischen SQL, RPG und HTML/Javascript und noch so einigem Schnickschnack.:)
Birgitta
overflow2038
21-12-11, 18:59
Mann könnte es auch unter OS/400 Release V7R1 es mit den Merge Befehl lösen und im anschluss den Datensatz entsprechend anpassen.
Hier der Link für die SQL Referenz für V7R1.
PDF file for SQL reference (http://publib.boulder.ibm.com/infocenter/iseries/v7r1m0/topic/db2/rbafzprintthis.htm)