[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Nov 2007
    Beiträge
    79

    Zwei Tabellen vergleichen und erste Aktualisieren

    Hallo,

    ich brauche mal wieder ein wenig gedankliche Unterstützung.

    Ich versuche ein Vorgehen zu entwickeln, um verlässlich Daten von einer Datei in eine andere Datei zu schreiben.

    Ich versuche das mal an einem Beispiel zu erklären:

    Ich habe zwei Tabellen:

    Haupttabelle:
    1. Feld 2. Feld 3. Feld 4. Feld
    A B C D


    Updatetabelle:
    1. Feld 2. Feld 3. Feld 4. Feld
    A B G H
    W X Y Z

    Nun erwarte ich folgendes Vorgehen / Ergebnis von meiner Lösung.

    Der 2. Datensatz in der Updatetabelle wird in die erste Tabelle geschrieben, also neu angelegt.

    Aus dem 1. Datensatz der Updatetabelle werden die Werte in den ersten Datensatz der Haupttabelle geschrieben, die sich unterscheiden.

    Die Haupttabelle wird also im Ergebnis der Updatetabelle entsprechen. Dabei kann es jedoch sein, dass die Haupttabelle einige 1000
    Datensätze enthält. Der Schlüssel ist für beide Tabellen das 1. Feld.

    Am liebsten wäre mir eine Lösung per SQL, aber hier bedarf es wohl noch etwas mehr Aufwand.

    Für ein wenig Hilfe wäre ich sehr dankbar.


    Gruß

    Matthias

  2. #2
    Registriert seit
    Nov 2007
    Beiträge
    79
    Vielleicht noch zur Info, ich kann leider nur mit CL und interaktivem SQL umgehen.

    QMQRY in CL integrieren schaffe ich auch noch.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Hierfür sind 2 verschiedene SQL's erforderlich, da SQL keinen UpdateInsert kennt.

    1.
    Update filea a
    set a.f2 = (select b.f2 from file b where a.f1=b.f1)
    where a.f1 in (select b.f1 from file b)

    2.
    insert into file a
    select f1, ... from file b
    where b.f1 not in (select c.f1 from file c)


    PS:
    Mit meinem SQLCPY geht so was spielend leicht
    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

  4. #4
    Registriert seit
    Nov 2007
    Beiträge
    79
    Kannst du mir noch ein paar Infos zu dem SQLCPY geben?

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Nunja, in der F1-Hilfe ist eigentlich alles erklärt (nach Installation).

    Aber das wesentliche findest du hier:
    Software
    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

  6. #6
    Registriert seit
    Nov 2007
    Beiträge
    79
    Hallo,

    ich habe jetzt mal einen ersten SQL gebaut, der das Einfügen in Abhängigkeit von einer anderen Tabelle erledigt. Ist noch etwas erweitert zu der obigen Anforderung, aber es tut das, was ich erwarte.

    INSERT INTO &RELEASE/&FILE
    SELECT * FROM &FILE
    WHERE &FILE.&FIELD in (Select &FIELD from CFWRLSSET/&FILE)

    Leider erhalte ich nach der für mich scheinbar korrekten Ausführung folgenden Fehler im Joblog:

    No query data to SAVE.
    SAVE DATA command ended due to error.
    STRQMQRY command failed.


    Weiß jemand, was da nicht stimmt?

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Hast du die ganzen Variablen auch korrekt gefüllt ?
    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

  8. #8
    Registriert seit
    Nov 2007
    Beiträge
    79
    ja, er führt ja die komplette Aktion auch wie erwartet aus. Also die Daten werden entsprechend der Selektion in die Zieldatei geschrieben.

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Wenn du keine Daten erwartest, also keinen Select verwendest, musst du OUTPUT(*) lassen.
    Mit einer anderen Angabe kommt dieser Fehler, da du ja keine Ausgabe-Daten produzierst.
    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

  10. #10
    Registriert seit
    Nov 2007
    Beiträge
    79
    Hallo,

    ich versuche meine Lösung noch ein wenig zu erweitern und möchte dazu einen SQL bauen, der das Update auf verschiedene Files machen kann, unabhängig von der Anzahl der Felder. So könnte ich dies als eine Art Modul verwenden und muss es nicht für jede Datei individuell aufbauen.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    1.
    Update filea a
    set a.f2 = (select b.f2 from file b where a.f1=b.f1)
    where a.f1 in (select b.f1 from file b)
    Der SQl sollte dabei etwas so aussehen, wie schon vorgeschlagen, aber mit mehreren SET statements. Das Problem für mich ist nun aber, ich weiß nie wie viele Felder die Tabelle haben kann. Lediglich das Maximum kann ich benennen.

    Hat jemand eine Idee, wie ich das machen könnte?

    Vielen Dank.

    Matthias

  11. #11
    Registriert seit
    Apr 2004
    Beiträge
    105
    ich denke da mußt du mit dynamischen SQL-Statements arbeiten. Weißt du denn an einer stelle des Programms (nicht im SQL-Statement), um welche Felder es sich handelt?

  12. #12
    Registriert seit
    Nov 2007
    Beiträge
    79
    Eigentlich ja, wenn ich das Programm aufrufe übergebe ich die entsprechende Datei als Parameter. Dann könnte man die Zahl ja auslesen.

    Allerdings, dynamisches SQL ist mir fremd. Das bedeutet ja auch HLL (RPG), eine solche beherrsche ich leider nicht.


    Gruß

    Matthias

Similar Threads

  1. Verknüpfen von Tabellen mit SQL
    By e_sichert in forum IBM i Hauptforum
    Antworten: 21
    Letzter Beitrag: 28-11-06, 19:43
  2. Journaling für alle Tabellen eines Schemas einschalten
    By remo2010 in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 24-11-06, 15:24
  3. DBCS Codepages vergleichen?
    By Stoeberl in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-11-06, 13:30
  4. Daten vergleichen auf zwei verschiedenen Maschinen
    By peter.kinne in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 29-09-06, 12:33
  5. Einzelne DB Tabellen sichern
    By CAL in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 23-06-06, 09:03

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •