jag håller på med en statistik applikation och har kört fast med hur jag skall ta reda på hur länge besökaren är på sidan.
Jag loggar det unika browser id't via sessions i databasen tillsammans med tiden (datetime) samt vilken sida som besöktes.
sessions = server_sid
tiden = server_time
vilken sida = client_referrer
Men jag kan inte komma på hur jag skall få vad client_referrer är när tiden är "max" så att säga.
Följade kod ger mig enbart den första träffen i client_referrer, jag vill ha ut den sista.
SELECT DISTINCT Server_SID , client_referrer, max( server_time ) AS max_time
FROM usury_hits
WHERE user_id = '1'
GROUP BY server_sid
ORDER BY hit_id
LIMIT 0 , 30
resultatet på min fråga i första inlägget kan se ut såhär:
Server_SID client_referrer max_time
783d843205f5eb17b5726927cba675d8 Direct Hit 2005-04-24 07:16:13
d5ea2af1a295924bc17f23e7bb3a38a1 domain.com/stats/hellow.php 2005-04-24 07:20:58
43330911c884fadf5f81c45c97de9a36 Direct Hit 2005-04-24 07:23:24
men kollar jag på tex 783* server_sid och den sista client_referrern är inte "direct hit" utan domain.com/stats/helloagain.php, "direct hit" är den första.
När det inte finns någon högre tid (max_time) när den raden visas vill jag även ha det värdet som är på samma rad men från client_referrer fältet.
SELECT Server_SID ,
client_referrer,
server_time as max_time
FROM usury_hits uh
WHERE user_id = 1
and server_time in (
select max(server_time)
from usury_hits
where server_sid = uh.server_sid)
ORDER BY hit_id
LIMIT 0 , 30
SELECT Server_SID ,
client_referrer,
server_time as max_time
FROM usury_hits uh
WHERE user_id = 1
and server_time in (
select max(server_time)
from usury_hits
where server_sid = uh.server_sid)
ORDER BY hit_id
LIMIT 0 , 30
Aha, subquerys var lösningen. funkar kalas. Tack Lars!