[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Apr 2003
    Beiträge
    195

    Update mittels SQL

    Hallo allerseits,

    ich hätte da wieder mal eine Frage an die SQL-Gurus unter euch.

    Ich versuche 2, vom Satzaufbau gleiche Dateien miteinander zu vergleichen und die erste mit Werten der zweiten upzudaten:

    Code:
    UPDATE RWLEX777/EIGENV as A set A.EIMZWF = B.EIMZWF,                 
    A.EIKTOS = B.EIKTOS, A.EIKSTS = B.EIKSTS, A.EIKTOH = B.EIKTOH,       
    A.EISTRF = 2 where A.EIBELN CONCAT A.EIPOS in(SELECT B.EIBELN        
    CONCAT B.EIPOS FROM RWLSAV777/EIGENV060 as B) AND A.EIBELN = 437152  
    Qualifikationsmerkmal für Spalte oder Tabelle B nicht definiert.
    Aber wie ihr sehen könnt, erhalte ich obige Fehlermeldung. Kann mir bitte jemand dabei helfen?

    Danke schon mal im voraus

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Mit der Where-Klauses schränkst du die Suche nur ein erhältst aber keinen Zugriff auf das Ergebnis.
    Für den Update gibt es 2 Varianten (je nach Release):


    update file1 a
    set
    a.field1 = (select b.field1 from file2 b where a.key=b.key)
    ,a.field2 = (select b.field2 from file2 b where a.key=b.key)
    :
    :
    where exists (select * from file2 b where a.key = b.key)

    Ab neueren Releasen kann man das nun vereinfachen:

    update file1 a
    set (a.feld1, a.feld2 ...) = (select b.feld1, b.feld2 ... from file2 b where a.key=b.key)

    where exists (select * from file2 b where a.key = b.key)
    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
    Apr 2003
    Beiträge
    195
    Hallo Fuerchau,

    danke schon mal für die rasche und wie immer sehr detaillierte Hilfe. Eine kurze Frage noch zu den Releasen. Ab welchem Release funktioniert denn die 2. Variante eigentlich? Wir haben hier noch V5R4 im Einsatz.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ab da müsste es gehen, versuchs doch einfach.
    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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    PS:
    Dein "... where ... concat ... in (select ... concat ... )" ist die schlechteste Lösung überhaupt.
    Wenn du einen Schlüssel (auch über mehrere Felder) hast ist ein "... exists (select ...)" der schnellste Weg (ich glaube seit V3).
    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
    Apr 2003
    Beiträge
    195
    Oh, danke für die Info; dann müsste das Statement für meine Zwecke also so lauten:?
    Code:
    update RWLEX777/EIGENV a
    set (a.EIMZWF, a.EIKTOS, a.EIKSTS, a.EIKTOH) = 
    (select b.EIMZWF, b.EIKTOS, b.EIKSTS, b.EIKTOH from 
    RWLSAV777/EIGENV060 b where a.EIBELN=b.EIBELN and a.EIPOS=b.EIPOS)
    where exists (select * from RWLSAV777/EIGENV060 b where 
    a.EIBELN=b.EIBELN and a.EIPOS=b.EIPOS)
    Und genau so hat es dann funktioniert. Danke nochmal für die rasche Hilfe

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Laut V5R4.Handbuch sollte das gehen.
    Um die Syntax eines SQL's vor der Aktion zu prüfen kannst du im STRSQL per F13 Auswahl 1 ja die Option (ich weiß i.M. nicht welche, aber das siehst du ja) von *RUN auf *SYN umschalten.
    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
    Apr 2003
    Beiträge
    195
    Hallo Fuerchau,

    danke nochmal das hat wunderbar funktioniert. Das mit dem Syntaxcheck habe ich - ich muss es gestehen - bis jetzt noch nicht verwendet. Einzig und allein die Sicherung der Sessions habe ich schon des öfteren verwendet.

Similar Threads

  1. SQL Update aus zwei Dateien mit 3 Schlüsselfeldern
    By mk in forum NEWSboard Programmierung
    Antworten: 13
    Letzter Beitrag: 13-07-12, 08:53
  2. update per sql
    By steven_r in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-09-06, 08:22
  3. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 15:31
  4. SQL UPDATE, verknüpfung zweier Dateien
    By desti82 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-07-06, 15:25
  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
  •