query = "select count(distinct ip),month(datum) from $databas_table where datum >= '2002-01-01' and datum <= '2002-12-31'
group by month(datum) order by month(datum)";
Har du något index på datumkolumnen?
6 svar · 223 visningar · startad av UrMe
Jag har är ingen hejare på SQL direkt ;)
Men det jag vill åstadkomma är att räkna unika besökare.
De unika besökarna ska räknas på följande sätt. Man räknar bara samma ip en gång per dag.
Koden ser ut så här just nu:
(Det är PHP)
for($manad=1;$manad<13;$manad++)
{
$totaltmanad = 0;
for($dag=1;$dag<32;$dag++)
{
if($manad < 10)
{
if($dag < 10)
{
$manadu = mysql_query("SELECT count(distinct ip) as antal FROM $databas_table WHERE datum LIKE '2002-0$manad-0$dag'");
$rowmanadu = mysql_fetch_array($manadu);
}
else if($dag >= 10)
{
$manadu = mysql_query("SELECT count(distinct ip) as antal FROM $databas_table WHERE datum LIKE '2002-0$manad-$dag'");
$rowmanadu = mysql_fetch_array($manadu);
}
}
else if($manad >= 10)
{
if($dag < 10)
{
$manadu = mysql_query("SELECT count(distinct ip) as antal FROM $databas_table WHERE datum LIKE '2002-$manad-0$dag'");
$rowmanadu = mysql_fetch_array($manadu);
}
else if($dag >= 10)
{
$manadu = mysql_query("SELECT count(distinct ip) as antal FROM $databas_table WHERE datum LIKE '2002-$manad-$dag'");
$rowmanadu = mysql_fetch_array($manadu);
}
}
$antaldag = $rowmanadu["antal"];
$totaltmanad = $totaltmanad + $antaldag;
}
$totalt[$manad] = $totaltmanad;
}
Undrar om det finns nå bättre sätt.. för just nu börjar databasen innehålla 30000 besök.. och det
ökar med 2000 varje dag :) .. så det går oerhört segt just detta..
Fråga gärna om nåt är oklart.
Tack på förhand!
query = "select count(distinct ip),month(datum) from $databas_table where datum >= '2002-01-01' and datum <= '2002-12-31'
group by month(datum) order by month(datum)";
Har du något index på datumkolumnen?
Hehe.. den koden ser ju lite renare ut :)
Men det jag undrar över är hur jag plockar ut antalet varje månad.. kan man skriva till "as antal" efter count(distinct ip) ?..
Ja.. allt ligger ju i en tabell.. och varje besök har ett unikt ID..
Det går att skriva dit antal och använda det. Annars så kan man indexera i resultatarrayen med numeriska index, så index 0 motsvarar första värdet.
Det jag menade med min fråga om index var om du hade skapat ett index enbart för datum-kolumnen.
Okej..
Men det blir fel på SQL frågan..
Får inge mysql_error heller står bara "Supplied argument is not a valid mysql result...... "
Det där med att indexera resultatarrayen alltså det blir nåt sådant här eller?:
$nr = 0;
while($row = mysql_fetch_array($resultat))
{
echo $row[$nr];
$nr++;
}
Eller har jag missuppfattat det helt? ;)
Det där med index på enbart datum-kolumnen hajjar jag inte riktigt :) .. jag hade skapat en array bara som lagrade antalet besökare för varje månad.
Hur ser resten av koden ut?
Med indexering så menade jag bara
while($row = mysql_fetch_array($resultat))
{
echo $row[0];
}
Man kan skapa index på kolumner i en tabell i databasen för att snabba upp sökningar och sorteringar
Glöm det som stod här förut... :r
Jag fick till det nu.. fan vad bra!
Tack Lars G ... du är ju kungen på SQL!!!! :e