-
UPDATE / SELECT
Hallo zusammen,
habe hier zwei Tabellen.
1. Tabelle "Teilepreise"
Feld 1: Teilenummer = ETNR
Feld 2: Firma = ETFIRMA
Feld 3: EK-Netto = ETEKNE
2. Tabelle "Teilebestand"
Feld 1: Teilenummer = BETNR
Feld 2: Firma = BEFIRMA
Feld 3: Durchschn. EK = BEDUEK
Nun möchte ich durch ein UPDATE/SELECT Statement
das feld TEILEBESTAND.BEDUEK durch den Wert in TEILEPREISE.ETEKNE updaten !!
Aber nur wenn
TEILEBESTAND.BETNR = TEILEPREISE.ETNR
und
TEILEBESTAND.BEFIRMA = TEILEPREISE.ETFIRMA!!
Ist dies möglich ??
Gruß
Christian
-
Hi Christian,
PHP-Code:
UPDATE XXX/teilebestand Set BEDUEK =
(SELECT ETEKNE FROM XXX/TEILEPREISE INNER JOIN XXX/TEILEBESTAND ON
TEILEBESTAND.BETNR = TEILEPREISE.ETNR AND
TEILEBESTAND.BEFIRMA = TEILEPREISE.ETFIRMA)
sollte das machen was du gerne hättest.
Gruß
Sascha
-
@Jonny
Der Update muss noch um eine Where-Klausel ergänzt werden, wenn der Select ggf. keine Werte liefert und NULL in das Zielfeld nicht gesetzt werden darf:
where betnr in (select etnr from teilepreise)
-
DANKE ERSTMAL.
funktioniert jedoch nicht !!
Meldung:
Die Ergebnistabelle einer Anweisung SELECT INTO, einer Unterabfrage oder einer Unterauswahl einer Anweisung SET enthält mehr als eine Zeile. Es handelt sich um Fehlerart 2. Bei Fehlerart 1 wurde von einer Anweisung SELECT INTO versucht, mehr als eine Zeile zurückzugeben.
anbei mein SQL
UPDATE TABELLE/RPBFREP SET TBEKDU =
(
SELECT TPEKNE FROM TABELLE/RPATREP
INNER JOIN
TABELLE/RPBFREP
ON
RPBFREP.TBTNR = RPATREP.TPTNR
AND
RPBFREP.TBFACD = RPATREP.TPFACD
WHERE
TBFACD='40'
AND
TBFICD='06'
)
WHERE
TBTNR
IN
(SELECT TPTNR FROM RPATREP WHERE TPFACD = '40')
-
Das Ergebnis deines Subselect muss natürlich genau 1 Zeile zurückgeben, da ja SQL sonst nicht weiß, welcher Wert denn nun da rein soll.
Du musst also deine Where-Klausel des Subselect so genau angeben, dass tatsächlich nur 1 Satz ausgewählt wird, da der Update ja nur für den einen aktuellen Satz gilt.
-
hab ich mir schon gedacht.
nur wie mach ich das ??
denke das das rein über ein SQl nicht geht !!
Da muss wahrscheinlich programmiert werden.
Oder ??
 Zitat von Fuerchau
Das Ergebnis deines Subselect muss natürlich genau 1 Zeile zurückgeben, da ja SQL sonst nicht weiß, welcher Wert denn nun da rein soll.
Du musst also deine Where-Klausel des Subselect so genau angeben, dass tatsächlich nur 1 Satz ausgewählt wird, da der Update ja nur für den einen aktuellen Satz gilt.
-
Wenn du keine eindeutige Beziehung hast, musst du eine schaffen.
Noch muss nix programmiert werden.
Wie ist denn die Beziehung der Tabelle RPATREP zu RPBFREP um TBEKDU zu aktualisieren ?
Wenn es mehrere Sätze gibt, worin unterscheiden sie sich (z.B. Gültigkeits-Datum o.ä.) ?
Diese Beziehung musst du ggf. per weiterem Subselect und MAX oder MIN-Funktion aufnehmen.
Similar Threads
-
By mk in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 13-07-12, 08:53
-
By cheffe1008 in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 21-09-06, 16:05
-
By wuwu in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 18-07-06, 15:31
-
By klausgkv in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 08-06-06, 13:47
-
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
-
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