-
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?
-
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
-
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).
-
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
-
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.
-
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.
Similar Threads
-
By mk in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 13-07-12, 08:53
-
By Bobou in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 22-11-06, 08:26
-
By desti82 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-07-06, 15:25
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
-
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
-
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