PDA

View Full Version : strsql



hhoffi
19-02-13, 20:47
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 <WBR>
WHERE KDANCD = 'D0' and KDFACD = '01') <WBR>
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

Pikachu
19-02-13, 21:01
Mach mal SELECT anstelle von UPDATE. Vermutlich schränkt die WHERE-Bedingung zu stark ein, so daß keine einzige Zeile ausgewählt wird.

andreaspr@aon.at
20-02-13, 06:46
Wenn du F6KDCD mit zwei unterschiedlichen Werten vergleichst und mit AND statt OR verbindest wird er nichts finden.


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

Obv
20-02-13, 12:58
Probier mal folgendes:


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.

Obv
20-02-13, 13:17
bzw. wenn nicht in beiden Dateien '123456' in der KDCD Spalte drinsteht ist natürlich das OR die richtige Lösung

hhoffi
21-02-13, 14:32
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