Gruppere efter kolonne 1 og sortere efter antallet af forekomster af kolonne 1
Hej eksperter,
Jeg er ved at programmere et script der viser mine besøgende på min hjemmeside. Jeg har lavet noget kode, der viser hvilke domæner der har henvist besøgende, og hvor mange de har henvist. Imidlertid kan jeg ikke se mig ud af hvordan jeg kan sortere på antallet af forekomster af domænet.
pt. laver den en tabel, hvor domænenavne og antal fremgår, men de er ikke sorteret efter antal, som ønsket.
Min kode ser således ud:
$result = mysql_query("select DISTINCT SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(Reference,'www.', ''),'/', '3'),'/', '-2') as Ref from Statistik where REPLACE(SUBSTRING_INDEX(Side,'/', '3'),'www.', '') = '".$Site."' and Reference != '' AND Tid > $start_tid AND Tid < $slut_tid order by Ref") or die(mysql_error()); while ($row = mysql_fetch_array($result)){
$match = str_replace("/","",$row['Ref']);
$Referencer = mysql_fetch_assoc(mysql_query("select COUNT(*) as antal from Statistik where REPLACE(SUBSTRING_INDEX(Side,'/', '3'),'www.', '') = '".$Site."' AND Reference LIKE '%$match%' AND Tid > $start_tid AND Tid < $slut_tid"));
du kan jo lave en COUNT(id) AS antal i din første query, så du slipper for at lave en query for hver række den løber igennem. og derefter sætte GROUP BY antal.
Det ligner mest af alt SQL creep det der, du har det langt mere gennemskuelige PHP sprog lige ved hånden og alligevel forsøger du at gøre det hele med SQL. Hvis du skal bruge de fleste eller alle rækker i en tabel så er det smarteste ofte at trække hele tabellen ind og så viderebehandle vha. PHP.
Det allersmarteste er (selvfølgelig) at du foretager første behandling af dine data allerede når de bliver genereret, lav en tabel med tre kolonner: domæne, tidsinterval og antal. Så definerer du en passende tidsopdeling (fx hvert døgn for sig), og når så du får et besøg opretter eller opdaterer du rækken for den pågældende domæne/tidsinterval kombination. På den måde får du færre rækker og hurtigere udtræk af data
splazz > jeg er ikke helt sikekr på hvordan jeg skal skrive det, er dette helt forkert:
$result = mysql_query("select COUNT(*) as antal from Statistik where REPLACE(SUBSTRING_INDEX(Side,'/', '3'),'www.', '') = '".$Site."' and Reference != '' AND Tid > $start_tid AND Tid < $slut_tid and GROUP BY SUBSTRING_INDEX(SUBSTRING_INDEX(REPLACE(Reference,'www.', ''),'/', '3'),'/', '-2') as Ref order by Ref") or die(mysql_error());
ebusiness > Jeg bruge de samme data til flere analyseformål, og ikke alle data er de samme for de rækker der evt. kunne grupperes. f.eks. skærmstørrelse, browser, operativt system, IP, m.v.
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.