Ich habe gerade mal ne Lösung in einer Abfrage ausprobiert, aber die Performance sollte nicht besonders gut sein, sobald die Datenbank eine gewisse Größe erreicht:
PHP-Code:
SELECT u1.log_userid, SUM( a.action_value )
FROM actions AS a, userlogs AS u1, userlogs AS u2
WHERE u1.log_userid = u2.log_userid
AND u1.log_datetime < u2.log_datetime
AND u1.log_type LIKE "Anmeldung"
AND u2.log_type LIKE "Abmeldung"
AND u2.log_datetime = (
SELECT MIN( u3.log_datetime )
FROM userlogs AS u3
WHERE u3.log_userid = u1.log_userid
AND u3.log_datetime > u1.log_datetime
AND u3.log_type LIKE "Abmeldung"
)
AND a.action_datetime BETWEEN u1.log_datetime AND u2.log_datetime
GROUP BY u1.log_userid
Ich denke die Felder sollten selbsterklärend sein, aber ich habe DateTime Typen benutzt, damit die Abfrage nicht so lang ist. Möchtest du das eben mit den einzelnen Date und Time Typen machen, musst du das ganze an jeder Stelle Casten, indem du folgende Funktion benutzt und natürlich auf die entsprechenden Felder anpasst:
PHP-Code:
CAST( CONCAT( u1.log_date, " ", u1.log_time ) AS DATETIME )
Solltest du diesen etwas komplizierteren Vorschlag nutzen, wäre es nett, wenn du mal was zu der Performance auf einer großen Datenmenge sagen könntest! Das ganze ist auch nicht in Bezug auf evtl auftretende Fehler getestet, wie z.B. fehlende Einträge o.ä.