gigi300885
Goto Top

SQL Abfrage Update nach Vergleich

Hallo zusammen,

ich habe folgendes Problem und leider nicht wirklich eine Idee dazu:

Es sind zwei Tabellen die verglichen werden müssen und anhand dessen Ergebnis ein Update durchgeführt werden soll.

Tabelle geprüfteFehler:
Sendungsnr Datum etc
12345 21.11.2014
45678 22.11.2014


Tabelle Sendung:
Sendngsummer Status Datum hinweis
12345 10 Fehler
55555 11 Test


Nun benötige ich eine Abfrage die folgendendes macht:

Wenn Hinweis von Tabelle "Sendung" like '%Fehler%' und Sendungsnummer nicht in Tabelle "geprüfteFehler" enthalten
dann mach ein Update der Tabelle "Sendung" und setze bei dieser Sendungsnummer das Feld Hinweis='Kein Fehler'

Leider bin ich noch nicht gnz so fit in SQL so dass ich diesen Vergleich nicht hin bekomme.

Bin für jede Hilfe dankbar.

Gruß gigi

Content-Key: 255694

Url: https://administrator.de/contentid/255694

Printed on: April 26, 2024 at 15:04 o'clock

Member: MadMax
Solution MadMax Nov 24, 2014 updated at 15:17:05 (UTC)
Goto Top
Hallo gigi,

Du schreibst nicht, was Du für eine DB hast, bei SQL Server würde das z.B. so aussehen:
update	Sendung
set	hinweis = 'Kein Fehler'  
from	Sendung s
where	hinweis like '%Fehler%' and  
	not exists (select 1 from geprüfteFehler where Sendungsnr = s.Sendngsummer)
Dir ist aber schon klar, daß mit dem "hinweis like '%Fehler%'" auch alle DS mit hinweis = 'Kein Fehler' nochmal geprüft werden, oder? Will sagen: Du solltest nochmal schauen, was da alles drin sein kann und die Bedingung dementsprechend anpassen.

Gruß, Mad Max
Member: Gersen
Gersen Nov 24, 2014 updated at 11:49:13 (UTC)
Goto Top
Hallo,

ungetestet:
update Sendung set hinweis = 'Kein Fehler' where hinweis like '%Fehler%' and Sendngsummer NOT IN (select Sendungsnr from geprüfteFehler)

Gruß,
Gersen
Member: gigi300885
gigi300885 Nov 24, 2014 at 15:19:00 (UTC)
Goto Top
super vielen Dankface-smile
Hat funktioniert. Und das mit den Bedingungen war einfach ein schlecht gewähltes Beispiel. Es wird nach "Ausfall" gesucht und das durch "Kein Fehler" ersetzt.