[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2007
    Beiträge
    1

    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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    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.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    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 Zitat von f.bengsch Beitrag anzeigen
    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
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    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.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

Similar Threads

  1. RPGLE - SQL
    By christian_lettner in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 16-11-06, 10:15
  2. SQL - Cursor vernichten ?!?
    By FNeurieser in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 11-10-06, 14:53
  3. SQL Vergleichen mehrere Ausdrücke
    By steven_r in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 26-07-06, 12:37
  4. SQL - Fehler
    By Kaufmann in forum IBM i Hauptforum
    Antworten: 11
    Letzter Beitrag: 28-06-06, 14:11
  5. SQL .. for update of (RPG embedded SQL)
    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
  •