Hallo,
mein Problem sieht folgendermassen aus:
Etwas vereinfacht habe ich eine mysql-Datenbank mit folgendem spaltenaufbau einer Tabelle:
id (AUTO_INCREMENT), computer_id(INT), time (INT).
Alle paar Sekunden tragen verschiedene Computer eine Zeile ein, wobei die time die Sekunden seit Anfang des Tages angibt.
Ich würde jetzt gerne pro Computer eine Statistik ausgeben wann jeweils pro Computer zwischen 2 aufeinanderfolgenden Eintragen mehr als x Sekunden lagen.
Wenn nur 1 Computer die Einträge macht ist das sehr einfach:
SELECT t2.time-t1.time, FROM mytable t1 INNER JOIN mytable t2 ON t1.id=t2.id-1 AND t1.time<t2.time-x;
Die Abfrage basiert auf der Annahme, daß die ID zweier aufeinanderfolgender Zeilen auch in Reihenfolge sind.
Wenn jetzt aber verschiedene Computer in dieselbe Tabelle schreiben sind die IDs nicht mehr aufeinanderfolgend.
Das wollte ich jetzt mit einer Variableln lösen, die sozusagen eine INCREMENTAL ID pro Computer on-the-fly erzeugt:
SET @counter=0;SET @counter2=0;
SELECT t2.time-t1.time FROM (SELECT @counter:=@counter+1 as counter, time FROM mytable WHERE computer_id=1) AS t1 INNER JOIN (SELECT @counter2:=@counter2+1 as counter, time from mytable WHERE computer_id=1) AS t2 ON t1.counter=t2.counter-1 and t1.time<t2.time-x;
Allerdings kehrt diese Query nicht mehr zurück.
Generell würde ich gerne statt zwei Sub-Queries zu machen nur einen machen, weiß aber nicht wie ich das bewerkstelligen soll.
Darüber hinaus wäre ich natürlich auch darüber dankbar wenn das ganze etwas simpler, schneller, besser gehen würde

Hat jemand ne Idee?
Jürgen
Hmm, vielleicht etwas Off-Topic (verschiebt mich bitte jemand zu den Datenbanken?!

)