Frage zu SQL-Befehl

Buba235

Erfahrenes Mitglied
Hallo Leute!


Ich hab eine MySQL Tabelle und arbeite in C unter Linux und hab mit einem Befehl ein Problem. Der Befehl sieht so aus:

Code:
sql = "UPDATE tabelle1 SET ID_LINK = (SELECT DISTINCT t2.PACKET_ID FROM tabelle1, 
(SELECT DISTINCT TIMESTAMP, PACKET_ID FROM tabelle1 WHERE SRC_IP IN 
(SELECT DISTINCT DST_IP FROM tabelle1 WHERE PACKET_ID)) AS t2 WHERE 
tabelle1.PACKET_ID = t2.PACKET_ID AND 
abs(unix_timestamp(tabelle1.TIMESTAMP) - unix_timestamp(t2.TIMESTAMP)) < 300)";

Es kommt immer dieser Fehler:

You can`t specify table 'tabelle1' for update in FROM clause

Wenn ich das "UPDATE tabelle1 SET ID_LINK = " weg lasse, gehts. Allerdings wird (logischerweise) nichts in meine Tablle eingetragen. Wo liegt denn da der Fehler? Wie kann ich den umgehen? Ein Beispiel wäre echt gut. Danke schon mal für euere Antworten!

Gruß
Buba
 
Hallo!


Also ich hab mal mein Problem etwas umformuliert und jetzt läuft er ohne Fehlermeldung durch. Leider wird nichts eingetragen. So schaut das jetzt aus:

Code:
sql = "SET @anything = (SELECT DISTINCT t2.PACKET_ID FROM tabelle1, 
(SELECT DISTINCT TIMESTAMP, PACKET_ID FROM tabelle1 WHERE SRC_IP IN 
(SELECT DISTINCT DST_IP FROM tabelle1 WHERE PACKET_ID)) AS t2 WHERE 
tabelle1.PACKET_ID = t2.PACKET_ID AND 
abs(unix_timestamp(tabelle1.TIMESTAMP) - unix_timestamp(t2.TIMESTAMP)) < 300)";

und:

Code:
sql2 = "UPDATE tabelle1 SET ID_LINK = @anything";


Woran liegt das?
 
Zurück