Update mit verschachtelter Where Bedingung

deostift

Erfahrenes Mitglied
Hallo zusammen,

ich möchte ein Update auf eine Tabelle durchführen, das mir ein Merkmal J / N setzen.

Die Tabelle schaut so aus:

timestamp: datetime [Primärschlüssel] (z.B. 2006-07-07 18:12:12)
temperatur: float(9,1)
merkmal: char(1)

Also .. ich möchte nun ein Update durchführen, das bei jeder Temperatur prüft, ob die Temperatur 10 Zeilen höher in der Tabelle um MEHR als 1 Grad kälter bzw. wärmer ist.

DANN soll in dem Merkmalfeld ein J (TRUE) abgetragen werden.

Habe im Moment das hier:

Code:
UPDATE 	`temperaturtabelle` 
SET 		`merkmal` = 'J' 
WHERE 	(`temperatur` - (SELECT `temperatur` FROM `temperaturtabelle` WHERE `timestamp` < '2006-07-04 08:12:25' ORDER BY `timestamp` DESC LIMIT 9 , 1)  < 1 )
AND 		((SELECT `temperatur` FROM `temperaturtabelle` WHERE `timestamp` > '2006-07-04 08:12:25' ORDER BY `timestamp` DESC LIMIT 9 , 1)  - `temperatur`< 1 )

Denke mal, das müsste im Groben passen.

Problem habe ich nun beim Vergleich des WHERE `timestamp` < '2006-07-04 08:12:25' ... das ist ja noch statisch. Wie kann ich denn im Sub-Select den timestamp der aktuellen Zeile eintragen lassen? So dass das Statement durch die ganze Tabelle läuft.

EDIT: Bekomme folgenden SQL Fehler: #1093 - You can't specify target table 'temperaturtabelle' for update in FROM clause

Kann wohl nicht diegleiche Table nicht im Vergleich verwenden .. :( Geht das also nicht als SQL-Statement sondern ich muss die Logik in ein externes (PHP) Skript packen?

Danke für Eure Hilfe, Deo
 
Zuletzt bearbeitet:
Zurück