FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Har WN som tidsfördriv
|
Hejsan!
Har nu stött på ett problem... jag driver sidan nyhetsarkiv.se och i systemet finns det tillgänglighet att kommentera en artikel. Artiklarna ligger i en tabell och kommentarerna i en. Men nu vill jag göra en lista över mest kommenterade artiklarna i form av "Mest diskuterade"... jag har googlat i säkert någon timme utan resultat. kommentarerna har en kolumn "postid" som är id't på artikeln som kommentaren tillhör. Någon som har en lösning? jag har försökt med array_sort() mm... men får inte riktigt till det så den räknar av antal kommentarer per artikel... Tacksam för svar! Med vänliga hälsningar! //Philip Andersson! |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Något sånt här borde fungera:
select count(postid) as antal_kommentarer, postid from kommentartabellen group by postid |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Har WN som tidsfördriv
|
$sql = "select count(pid) as antalet,
pid from comments group by pid"; while($line = mysql_fetch_assoc(mysql_query($sql))){ echo $line['pid']; echo "<br>"; } ?>[/CODE] pid = postid som i förra posten... Resultatet blir en oändligt lång lista med samma pid som i första kommentaren... Kod:
40 40 40 40 40 osv.... tack! ![]() |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Har WN som tidsfördriv
|
jag skulle kunna tänka mig att det borde funka med att först använda någon form av array sort by count eller något och sedan köra array_unique på dem så får man ju fram listan...
|
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
Du borde kunna köra något liknande:
select pid, (select count(*) from comments where pid=c.pid) as antalet from comments c order by antalet desc Det kan vara snabbare än group by förutsatt att du har bra indexering.. |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Har WN som tidsfördriv
|
Citat:
Kod:
40 40 40 40 40 osv.... PHP-kod:
|
||
![]() |
![]() |
![]() |
#7 | |||
|
||||
Medlem
|
select a.*, count(*) as ncomments from artiklar a left join comments c on c.pid=a.pid group by a.pid order by a.pid desc
?? |
|||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Klarade millennium-buggen
|
Citat:
Gör du på detta viset så ställer du frågan till databasen om och om igen och visar resultatet för första raden ett oändligt antal gånger. Den sql-fråga du fått ger det riktiga svaret, OM du ställer frågan rätt till databasen och sen tar reda på svaret och skriver ut det ordentligt. Pröva med att ställa frågan En(1) gång till databasen, ta hand om resultatet och lista det på ett riktigt sätt: Citat:
|
||
![]() |
![]() |
![]() |
#9 | |||
|
||||
Medlem
|
Citat:
![]() |
|||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Flitig postare
|
Ditt sätt är dock felaktigt. Tänk på vad som händer ifall en artikel har 0 kommentarer.
|
||
![]() |
![]() |
Svara |
|
|