[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Sep 2001
    Beiträge
    31

    Question SQL Update 2 Dateien

    Wieder mal das leidige Thema: Ich möchte Daten aus Feldern der Datei 2 in Felder der Datei 1 updaten. Habe mich an die Syntax gehalten und bekomme jetzt Fehlenmeldungen, dass ein TOKEN falsch ist:

    update mdv/fzs set (fszleasvar, fzsleasvnr, fzsleasend) = (select
    vtyp, vnum, vende where fzskeyknd=mdv/lea.fzskeyknd)
    Token FZSKEYKND ungültig. Gültige Token: , FROM INTO.

    Der Cursor steht auf den farbig markierten Buchstaben. Was ist da falsch?

  2. #2
    Registriert seit
    Jan 2001
    Beiträge
    835
    Hallo
    hier ein Beispiel:

    Wenn ich das richtig sehe fehlt das from auf die Datei

    update asmtool/lprm01p A set LVAL=
    ( select lval from asmtoolold/lprm01p B
    where a.lpgm = b.lpgm
    and a.llnr = b.llnr
    and a.lent = b.lent )

    Gruss
    Michael

  3. #3
    Registriert seit
    Sep 2001
    Beiträge
    31

    Question

    Das war es noch nicht. Jetzt kommt die Meldung

    Ergebnis der Anweisung enthält mehr als eine Zeile.

    Syntax:
    update mdv/fzs set (fzsleasvar, fzsleasvnr, fzsleasend) = (select
    fzsleasvar, fzsleasvnr, fzsleasend
    from mdv/lea where fzskeyknd=lea.fzskeyknd)

    Irgendwas ist noch falsch. Übrigens Datei 1 ist natürlich viel größer als Datei 2 und in Datei 2 sind demzufolge auch nicht alle Sätze zu finden. Es sollen die Felder der gefundenen Sätze in Datei 1 upgedated werden (scheußliches Wort).

  4. #4
    Registriert seit
    Apr 2002
    Beiträge
    792
    Hi,

    versuchs mal hiermit:

    update mdv/fzs
    set (fzsleasvar, fzsleasvnr, fzsleasend) =
    (select fzsleasvar, fzsleasvnr, fzsleasend
    from mdv/lea where fzskeyknd=lea.fzskeyknd)
    where mdv/fzs.fzskeyknd in (Select fzskeyknd from mdv/lea where fzskeyknd=lea.fzskeyknd)

    Auf jeden Fall muss da noch das Where ... In ... rein

    Gruß

    Sascha

  5. #5
    Registriert seit
    Sep 2001
    Beiträge
    31

    Question

    Habe den String wie folgt geändert:

    update mdv/fzs set (fzsleasvar, fzsleasvnr, fzsleasend) = (select
    fzsleasvar, fzsleasvnr, fzsleasend from mdv/lea where
    fzskeyknd=lea.fzskeyknd)
    where fzs.fzskeyknd in (select fzskeyknd from mdv/lea
    where fzskeyknd=lea.fzskeyknd)

    Resultat ist immer noch:
    Ergebnis der Anweisung enthält mehr als eine Zeile.

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.247
    Update mit Subselect MUSS genau eine 1:1-Beziehung liefern.
    D.h.: in der Where-Bedingung muss der gesamte eindeutige Schlüssel genannt werden.

    update ufile a set ... = (
    select ... from qfile b where a.key=b.key)
    where a.key in (select c.key from qfile c where ...)

    .key muss der gesamte Schlüssel (a.key1=b.key1 and ...) sein, bei der in-Klausel darf ja leider nur ein Feld benannt werden, dieses muss dann zusammengebaut werden:

    a.key1 concat a.key2 ... = c.key1 concat c.key2 ...

    Ist eines der Felder numerisch, kann es per DIGITS bzw. CHAR in Alpha gecastet werden.

    Dieses Problem ist in verschiedensten Varianten hier bereits beschrieben.
    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

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. SQL Update über 3 Dateien
    By Bobou in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 22-11-06, 08:26
  3. SQL UPDATE, verknüpfung zweier Dateien
    By desti82 in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 04-07-06, 15:25
  4. SQL .. for update of (RPG embedded SQL)
    By loeweadolf in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 01-06-06, 09:43
  5. sql update mit 2 verknüpften dateien
    By juniorprog in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 03-02-06, 11:17

Berechtigungen

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