-
SQL kompletten Datensatz vergleichen
Hallo,
ich möchte mit SQL auf unserer iSeries zwei gleiche Dateien mit gleichem Satzaufbau und n-Feldern auf Unterschiede vergleichen.
Gibt es im SQL die Möglichkeit, den Vergleich nicht auf Feldebene, sonderen auf Satzebene auszuführen (ich habe keine Lust jedes einzelne Fed zu prüfen).
Ich stelle mir den Befehl so oder so ähnlich vor :
select 'neu', record from datei1 where datei1.record not in (select datei2.record from datei2) union
select 'alt', record from datei2 where datei2.record not in (select datei1.record from datei1)
Wenn die Dateien nur 1 Feld haben, funktionierts mit sql. Ich kopiere die Datei1 in Datei2 bevor ich die Datei1 z.B. einmal wöchentlich neu fülle,
Gruß aus Bremen
Frank Bengsch
-
Da muss ich dich enttäuschen, so einfach geht das nicht:
select * from neu
where feld1 concat feld2 concat ... not in (select feld1 concat feld2 concat ... from alt)
union all
select * from alt
where feld1 concat feld2 concat ... not in (select feld1 concat feld2 concat ... from neu)
ggf. sind numerische Felder noch mit CHAR(numfield) zu konvertieren.
Für solche Aufgaben ist ILE/RPG auf jeden Fall besser geeignet, da du dort Strukturen (dXNEU DS EXTNAME(NEU) PREFIX(N)) vergleichen kannst.
-
create view diffs as(
select a.*
from datei1 a left join datei2 b
on a.feld1 = b.feld2,
...
a.feldx = b.feldx
where b.feld1 is null
union
select a.*
from datei2 a left join datei1 b
on a.feld1 = b.feld2,
...
a.feldx = b.feldx
where b.feld1 is null
)
einmal gemacht und dann nur noch
select * from difs
mfg
Dieter Bender
 Zitat von f.bengsch
Hallo,
ich möchte mit SQL auf unserer iSeries zwei gleiche Dateien mit gleichem Satzaufbau und n-Feldern auf Unterschiede vergleichen.
Gibt es im SQL die Möglichkeit, den Vergleich nicht auf Feldebene, sonderen auf Satzebene auszuführen (ich habe keine Lust jedes einzelne Fed zu prüfen).
Ich stelle mir den Befehl so oder so ähnlich vor :
select 'neu', record from datei1 where datei1.record not in (select datei2.record from datei2) union
select 'alt', record from datei2 where datei2.record not in (select datei1.record from datei1)
Wenn die Dateien nur 1 Feld haben, funktionierts mit sql. Ich kopiere die Datei1 in Datei2 bevor ich die Datei1 z.B. einmal wöchentlich neu fülle,
Gruß aus Bremen
Frank Bengsch
-
Hallo,
wenn Du Release V5R3 oder höher hast, versuch folgendes:
PHP-Code:
. (Select * From Table1
Except
Select * From Table2)
Union
(Select * From Table 2
Except
Select * From Table1)
Bei dem ersten Except werden alle Sätze aufgelistet, die in Table1 und nicht in Table2 sind.
Beim zweiten Except werden alle Sätze aufgelistet, die in Tabel2 und nicht in Table1 sind.
Der Union bringt alle Sätze die entweder nur in der einen oder der anderen Tabelle sind.
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By steven_r in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 26-07-06, 12:37
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks