udtræk fra tabel med 2x limit eller omstrukturering af sql query
Jeg er ved at lave en "hot" liste til min hjemmeside.Det er en liste over mest aktive debatter, dvs hvilken tekst har fået flest kommentarer, hvor nyere kommentarer vægtes højt i forhold til ældre.
Måden jeg har valgt at gøre det på er følgende (alle kommentarer ligger i samme tabel uanset tekst-type):
1. hent X seneste kommentarer ud (X skal være forholdsvis stor i forhold til gennemsnitligt antal kommentarer per dag, f.eks 7x gennemsnitligt antal kommentarer per dag)
2. Optæl antal kommentarer i den udtrækkede pulje fra før fordelt på tekster.
3. Sorter efter antal kommentarer, og returner de Y mest kommenterede
Tabellen er opbygget ca sådan her:
id | textItemId | dateSubmitted | userId | text
Jeg har lavet følgende sql:
SELECT count(*) as numComments, id, textItemId
FROM comments
GROUP BY textItemId
ORDER BY numComments DESC
LIMIT 0,5
Dette returnerer de 5 mest kommenterede topics, men baseret på samtlige kommentarer.
Det er som beskrevet ikke det jeg vil idet jeg kun vil kigge på f.eks de sidste 2500 kommentarer.
Derved kommer tidsaspektet med ind så en gammel debat ikke vil blive ved med at hænge som hot topic da jeg kun kigger på de mere aktuelle kommentarer.
Spørgsmålet er altså:
Kan jeg lave et udtræk hvor jeg optæller kommentarer til tekster, men kun baseret på de sidste f.eks 2500 kommentarer ?
rent sql mæssigt ville det svare til:
sel1:
SELECT id, textItemId
FROM comments ORDER BY dateSubmitted
LIMIT 2500
sel2:
SELECT count(*) as numComments, id, textItemId
FROM sel1
GROUP BY textItemId
ORDER BY numComments DESC
LIMIT 0,5
Håber det giver mening, og det skal så udføres i samme sql statement.