dedlfix: MySQL DB Abfrage

Beitrag lesen

Tach!

Was klappt nicht? Was soll eigentlich bei der Timestamp-Differenz rauskommen? Wieso stehen in der Session-ID Leerstrings und nicht NULL, wenn selbige unbekannt oder nicht vorhanden ist?

Ich hätte gerne die "Online-Zeit". Zur zweiten Frage: Ich weiß es nicht.

Die solltest du aber beantworten können, den du schreibst da ja was rein - oder auch nicht. Dann gibt es vielleicht einen Default-Wert im CREATE-TABLE-Statement und das Feld ist NOT NULL. Ich würde da NULL bevorzugen, wenn die Session-ID nicht bekannt ist. Wie auch immer, die Zeit in Sekunden solltest du aber bekommen, wenn es sich bei den Timestamps um Unix-Timestamps handelt. Bei DATETIME-Werten geht vermutlich kein Minus (oder bringt kein sinnvolles Ergebnis), da muss dann eine der Zeitdifferenz-Funktionen verwendet werden.

Ich habe die Abfrage jetzt so:

SELECT a.sessionID,

(SELECT timestamp FROM user_log b WHERE b.sessionID = a.sessionID ORDER BY timestamp ASC LIMIT 1) as min,
(SELECT timestamp FROM user_log b WHERE b.sessionID = a.sessionID ORDER BY timestamp DESC LIMIT 1) as max
FROM user_log a WHERE a.userID = xxx GROUP BY a.sessionID


>   
> allerdings, dauert sie über 30 Sekunden, was nicht tragbar ist.  
  
Fehlen vielleicht Indexe auf UserID und SessionID? Aber selbst wenn du das so mit den Subquerys haben möchtest, kannst du statt Sortieren und Limitierten Min und Max verwenden.  
  
  
dedlfix.