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-ID: 255694

Url: https://administrator.de/forum/sql-abfrage-update-nach-vergleich-255694.html

Ausgedruckt am: 22.12.2024 um 18:12 Uhr

MadMax
Lösung MadMax 24.11.2014 aktualisiert um 16:17:05 Uhr
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
Gersen
Gersen 24.11.2014 aktualisiert um 12:49:13 Uhr
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
gigi300885
gigi300885 24.11.2014 um 16:19:00 Uhr
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.