Avatar billede fangel Nybegynder
18. juni 2003 - 20:15 Der er 10 kommentarer og
1 løsning

SQL til statestik script

Hej

jeg er igang med at udvikle et lille statestik-script...

jeg har følgende database:

---
#
# Table structure for table `statistik`
#

CREATE TABLE statistik (
  ID int(11) NOT NULL auto_increment,
  Ip tinytext NOT NULL,
  Date int(11) NOT NULL default '0',
  JS tinyint(4) NOT NULL default '0',
  Page tinytext NOT NULL,
  Referer tinytext NOT NULL,
  Os tinytext NOT NULL,
  Browser tinytext NOT NULL,
  Screen tinytext NOT NULL,
  Color tinytext NOT NULL,
  PRIMARY KEY  (ID)
) TYPE=MyISAM;

#
# Dumping data for table `statistik`
#

INSERT INTO statistik VALUES (1, '127.0.0.1', 1055959575, 1, '/Stat/ex.html', '0', 'Windows XP', 'Mozilla 1.5a', '1280x1024', '32');
INSERT INTO statistik VALUES (2, '127.0.0.1', 1055959584, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32');
INSERT INTO statistik VALUES (3, '127.0.0.1', 1055959612, 1, '/Stat/ex.html', '0', 'Windows XP', 'Netscape 7.02', '1280x1024', '32');
INSERT INTO statistik VALUES (4, '127.0.0.1', 1055959619, 1, '/Stat/ex.html', '0', 'Windows XP', 'Netscape 7.02', '1280x1024', '32');
INSERT INTO statistik VALUES (5, '127.0.0.1', 1055959639, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32');
---

som i nok kan se, så er der 5 besøg, og 4 unikke...

spørgsmålet er så hvordan jeg fanger unikke besøg... første tanke var bare at lave en "GROUP BY Ip", men denne kan jo lave lidt misvisning...

så spørgsmålet er så, er det muligt at lave en der finder antal rækker der er unikke på Os, Browser, Ip (i den række følge)

håber i forstår...

Morten
Avatar billede detox Nybegynder
18. juni 2003 - 21:19 #1
Skal både Os, Browser og IP være unikke?
Avatar billede detox Nybegynder
18. juni 2003 - 21:24 #2
Måske så'n her:
---------------
SELECT  * , COUNT( Os ) AS numos, COUNT( Browser ) AS numbrowser, COUNT( Ip ) AS numip
FROM  `statestik`
GROUP  BY Os, Browser, Ip
HAVING numos < 2 AND numbrowser < 2 AND numip < 2
Avatar billede fangel Nybegynder
18. juni 2003 - 23:05 #3
der kommer en ny post i databasen for hvert besøg... har ikke testet det query, og gør det først i morgen (aften)...

men umidbart ligner det ikke at den gør det rigtige... (men hva' ved jeg)

Morten
Avatar billede detox Nybegynder
19. juni 2003 - 23:17 #4
Ja, det virker hos mig, hvis jeg har forstået det rigtigt...
Avatar billede fangel Nybegynder
20. juni 2003 - 11:45 #5
ikke helt:

ved dette data:

---
INSERT INTO statistik VALUES (1, '127.0.0.1', 1055959575, 1, '/Stat/ex.html', '0', 'Windows XP', 'Mozilla 1.5a', '1280x1024', '32');
INSERT INTO statistik VALUES (2, '127.0.0.1', 1055959584, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32');
INSERT INTO statistik VALUES (3, '127.0.0.1', 1055959612, 1, '/Stat/ex.html', '0', 'Windows XP', 'Netscape 7.02', '1280x1024', '32');
INSERT INTO statistik VALUES (4, '127.0.0.1', 1055959619, 1, '/Stat/ex.html', '0', 'Windows XP', 'Netscape 7.02', '1280x1024', '32');
INSERT INTO statistik VALUES (5, '127.0.0.1', 1055959639, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32');
INSERT INTO statistik VALUES (6, '80.196.154.84', 1056049146, 1, '/Stat/ex.html', '0', 'Windows XP', 'Internet Explorer 6.0', '1280x1024', '32');
INSERT INTO statistik VALUES (18, '127.0.0.1', 1056049891, 1, '/Stat/ex.php', '0', 'Windows XP', 'Opera 7.1', '1280x1024', '32');
---

og dette query:

---
SELECT * , COUNT( Os ) AS numos, COUNT( Browser ) AS numbrowser, COUNT( Ip ) AS numip
FROM `statistik`
GROUP BY Os, Browser, Ip
HAVING numos < 2 AND numbrowser < 2 AND numip < 2
---

for jeg dette data tilbage:

---
ID        Ip        Date        JS        Page        Referer        Os        Browser        Screen        Color        numos        numbrowser        numip
6     80.196.154.84     1056049146     1     /Stat/ex.html     0     Windows XP     Internet Explorer 6.0     1280x1024     32     1     1     1
1     127.0.0.1     1055959575     1     /Stat/ex.html     0     Windows XP     Mozilla 1.5a     1280x1024     32     1     1     1
18     127.0.0.1     1056049891     1     /Stat/ex.php     0     Windows XP     Opera 7.1     1280x1024     32     1     1     1
---

men burde jo få 4 rækker (fire forskellige slags browsere)

Morten
Avatar billede detox Nybegynder
21. juni 2003 - 02:47 #6
Nej for ID 3 og 4 er jo ikke unikke, så de (Netscape) kommer jo ikke med.
Så jeg er ikke sikker på hvad du vil. Hvis du vil ha' dem grupperet efter;
Os, Browser og IP:
SELECT  *
FROM  `statistik`
GROUP  BY Os, Browser, Ip
-------------------------
får du jo 5 rækker, da der er 2 forskellige ip'er på Internet Explorer 6.0.
Avatar billede fangel Nybegynder
28. juni 2003 - 16:46 #7
det dewn skal er lige som den første, bare at hvis der er flere af en (som med netscape) skal den kun tælle som en

Morten
Avatar billede detox Nybegynder
28. juni 2003 - 18:50 #8
Kan du så ikke bruge:
SELECT  * , COUNT( Os )  AS numos, COUNT( Browser )  AS numbrowser, COUNT( Ip )  AS numip
FROM  `statistik`
GROUP  BY Browser, Os
eller måske bare:
SELECT  *
FROM  `statistik`
GROUP  BY Browser, Os
Avatar billede fangel Nybegynder
29. juni 2003 - 09:38 #9
hvis man laver

SELECT  *
FROM  `statistik`
GROUP  BY Browser, Os

og så får antal rækker returneret synes det at give det rigtige resultat!

---

så vi stopper her, vil du har point

Morten
Avatar billede fangel Nybegynder
12. juli 2003 - 11:17 #10
nå ikke, så lukker vi her!

Morten
Avatar billede detox Nybegynder
12. juli 2003 - 11:33 #11
c",)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester