Jag har två tabeller: Jag ser inte exakt hur det funkar. Du har en post du uppdaterar varje dag, så fort det blir en ny dag så kommer det en ny post (per sida)? Det var totalt jag tänkte först men högst "lowest" lät ju egentligen inte så dumt. Men hur som helst, jag har testat den här koden: <code> Niklas kod fungerade efter lite justering men Lars kod verkade vettigare. <b>Förresten, finns inte DateAdd i MySQL?</b>Statistik
Pages:
ID
Address
Statistics:
ID
PageID
StatDate
Counter
Varje rad i Statistics innehåller en räknare för en specifik sida ett specifikt datum. Nu försöker jag att få fram dom 5 populäraste sidorna dom senaste 7 dagarna, men jag får det inte att fungera.
Tips?
/ThomasSv: Statistik
Hur definierar du "populärast"?
Flest totalt?
Då är något i stil med följande vettigt
SELECT TOP 5 * FROM (SELECT PageID, SUM(Counter) as Count FROM Statistics where StatDate<"Today-5 dagar" GROUP BY PageID ORDER BY Count)
eller flest på en enskild dag?
eller med högst "lowest" day? (Den som är "jämnpopulärast")Sv:Statistik
<code>
SELECT * FROM (SELECT PageID, SUM(Counter) as Count FROM Statistics where StatDate > DATEADD("d", -7, NOW()) GROUP BY PageID ORDER BY Count) LIMIT 0, 5
</code>
Jag får då felet "Every derived table must have its own alias". Vad menas med det?
/ThomasSv: Statistik
SELECT PageID, SUM(Counter) as Cnt
FROM Statistics
where StatDate > DATEADD('d', -7, NOW())
GROUP BY PageID
ORDER BY Cnt desc
LIMIT 0, 5
</code>
Om man har en select i from (detta kallas derived table) så måste man ange ett (godtyckligt) namn.
<code>
select ..
from (select ...) as dt
</code>Sv:Statistik
Tack till er båda!
Förresten, finns inte DateAdd i MySQL? Den klagar iaf på att funktionen DateAdd inte finns, men jag måste ju ha använt mig av det nån gång tidigare tycker jag.
Nu löste jag det dock genom att lägga in rätt datum i strängen genom ASP.
/ThomasSv: Statistik
Jodå, men den har inte samma syntax som användes ovan. Se
http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html
Man kan även använda en annan syntax:
<code>begin_date + INTERVAL 30 DAY < NOW()</code>