[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Dec 2004
    Beiträge
    178

    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

  2. #2
    Registriert seit
    Apr 2002
    Beiträge
    792
    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

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    @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)
    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
    Dec 2004
    Beiträge
    178
    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')

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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.
    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
    Dec 2004
    Beiträge
    178
    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 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.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    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.
    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. CREATE FUNCTION mit select im Bauch ?
    By cheffe1008 in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 21-09-06, 16:05
  3. Update Syntax SQL
    By wuwu in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 18-07-06, 15:31
  4. Cobol-Programm mit Embedded SQL (SELECT CASE)
    By klausgkv in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 08-06-06, 13:47
  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
  •