[NEWSboard IBMi Forum]

Thema: strsql

Hybrid View

  1. #1
    Registriert seit
    Jul 2009
    Beiträge
    15

    strsql

    Guten abend
    Komme bei folgendem SQL-Statement nicht weiter:

    UPDATE REPXXX/RQF6CPP SET F6H6TX ='Test'
    WHERE F6FACD = '29' and F6H6TX = '' and F6KDCD = '123456'
    AND F6KDCD IN (SELECT KDKDCD FROM REPXXX/RPAIREP
    WHERE KDANCD = 'D0' and KDFACD = '01')
    Row not found for UPDATE.

    Ziel: Field F6H6TX mit Test wenn F6KDCD=123456 und KDANCD=D0 + KDFACD=01

    Vielen Dank für eure Hilfe.
    Grüsse aus der Schweiz.
    Hans

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Mach mal SELECT anstelle von UPDATE. Vermutlich schränkt die WHERE-Bedingung zu stark ein, so daß keine einzige Zeile ausgewählt wird.

  3. #3
    Registriert seit
    Aug 2003
    Beiträge
    1.508
    Wenn du F6KDCD mit zwei unterschiedlichen Werten vergleichst und mit AND statt OR verbindest wird er nichts finden.

    Code:
    UPDATE REPXXX/RQF6CPP SET F6H6TX ='Test'
    WHERE F6FACD = '29' and F6H6TX = '' and ( F6KDCD = '123456'
    OR  F6KDCD IN (SELECT KDKDCD FROM REPXXX/RPAIREP
    WHERE KDANCD = 'D0' and KDFACD = '01')) 
    lg Andreas

  4. #4
    Registriert seit
    Jul 2011
    Beiträge
    14
    Probier mal folgendes:

    Code:
    merge into REPXXX/RQF6CPP USING REPXXX/RPAIREP
    ON    F6KDCD = KDKDCD
    And   KDANCD = 'D0'
    And   KDFACD = '01'
    and   F6KDCD = '123456'
    and   F6FACD = '29'
    and   F6H6TX = '' 
    WHEN MATCHED THEN UPDATE SET
    F6H6TX = 'Test'
    mit der syntax tu ich mir leichter bei updates 2 Tabellen zu verbinden ohne ettliche subselects.

    Du kannst es ja vorher mit einem select überprüfen.

  5. #5
    Registriert seit
    Jul 2011
    Beiträge
    14
    bzw. wenn nicht in beiden Dateien '123456' in der KDCD Spalte drinsteht ist natürlich das OR die richtige Lösung

  6. #6
    Registriert seit
    Jul 2009
    Beiträge
    15

    strsql

    Hallo
    Besten Dank für die Hilfe. Mit folgendem sql-Befehl funktioniert's:

    UPDATE REPXXX/RQF6CPP SET F6H6TX ='Test' WHERE F6FACD = '29' and F6H6TX = '' and ( F6KDCD = '123456' OR F6KDCD IN (SELECT KDKDCD FROM REPXXX/RPAIREP WHERE KDANCD = 'D0' and KDFACD = '01' and KDKDCD = '123456'))

    Schöne Grüsse
    Hans

Similar Threads

  1. STRSQL F9 letzte Anweisungen
    By TARASIK in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 27-08-12, 13:31
  2. STRSQL - in welcher Datei???
    By woodstock99 in forum NEWSboard Programmierung
    Antworten: 37
    Letzter Beitrag: 23-01-12, 10:21
  3. SQL - Unterschied in STRSQL und SQLRPGLE
    By muadeep in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 03-12-09, 13:21
  4. SQL Befehle unter strsql
    By MWendel in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 07-11-07, 12:00
  5. STRSQL
    By Miles in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 07-03-07, 11:50

Berechtigungen

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