FAQ |
Kalender |
![]() |
#1 | |||
|
||||
Flitig postare
|
Jag håller på och skapar en statistisk analys på min hemsida och sparar IP, referer, sessionid, UA, QS med mera.. Jag vill plocka ut antalet unika besökare och tänkte då att man enklast gör detta genom antalet unika sessionid med unika IP-nummer.. Varenda sidbesök registreras i databasen, så IPnumret finns oftast med multipla gånger och så även sessid.. så jag vill kunna ta reda på hur många unika besökare jag har och hur många sidor de besöker i snitt.. det vore ganska enkelt, men jag vet inte hur jag ska göra queryn med unika par av IP och sessid.
Kod:
SELECT IP, sessid FROM statistik WHERE.... EDIT: Anledningen till att jag inte matchar bara unika sessid är att de kan ju slumpas till samma. Om du har något bättre förslag på hur man letar fram unika besökare så finns fälten tidpunkt(timestamp), referer(refererande URL), host(webbsidans host),UA(UserAgent), IP(IP-nummer), PS(PHPSELF), QS(QueryString) ,charset(förvald charset i klientens webbläsare) och sessid |
|||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
GROUP BY ip är nog vad du söker. Då grupperar databasen upp varje unikt ip i en "grupp". Denna grupp kan du sedan utföra "aggregate"-funktioner på precis som vanligt, tex count, avg, max etc.
Tex: SELECT ip, COUNT(id) FROM bigbrother GROUP BY ip; Producerar ett resultat med varje ip, samt hur många gånger detta IP har besökt din sida. Om du bara vill ha återkommande besökare kanske följande query är intressant: SELECT ip, COUNT(id) FROM bigbrother GROUP BY ip HAVING COUNT(id) > 1; Edit: för att få "riktigt unika besökare" så får du förstås konkatenera ett par fält, då tex ip + useragent + dag kanske tex: CONCAT(ip, useragent, DATE_FORMAT(datumfalt,'%nånting') |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Mycket flitig postare
|
Du skulle sökt efter DISTINCT och inte UNIQUE.
Dock är ju en variant av grazzys förslag där du använder count(xxx) bättre eftersom du då låter DBn räkna istf att göra det i klientkoden. Ang. sessionID så finns det en sätt att skapa ett ID som är i praktiken unikt. Gör en sträng av UserAgent, IP, tid (gärna inkl mikrosekunder) och ett slumpvärde. MD5 hasha strängen och du har ett sesisonsID som är tillräckligt bra i praktiken utan att du skall vara orolig för att slumpen skall slå ihop två sessioner. |
||
![]() |
![]() |
Svara |
|
|