Vraag & Antwoord

Webprogrammeren & scripting

[MySql] Ranking toevoegen aan resultaat

3 antwoorden
  • Hoe voeg ik een "ranking" toe aan het resultaat van een query die een top 'zoveel' creeert van b.v. het meest aantal getelde namen? Ik heb al zitten zoeken, en kwam wel termen tegen als ranking() over, en row-number(). Maar dat werkt allemaal niet op mij MySql query. Ik krijg de ene foutmelding na de andere. (Of wellicht doe ik iets verkeerd?) Ik heb een query die netjes een top 15 samenstelt van de 15 meest voorkomende namen in een tabel, maar deze voegt geen ranking toe: SELECT comment_author AS name, COUNT(*) AS amount FROM comments GROUP BY name ORDER BY amount DESC LIMIT 0, 15; Deze query werkt prima. Resultaat: <name>, <amount> B.V.: Bob, 45 Harry, 23 John, 12 Stephen, 8 etc. Maar wat ik wil is dat er ook een ranking aan worrdt toegekend: <name>, <amount>, <ranking> B.V.: Bob, 45, 1 Harry, 23, 2 John, 12, 3 Stephen, 8, 4 etc. Is dat mogelijk?
  • [url=http://forums.devshed.com/mysql-help-4/mysql-rank-function-487657.html]Hier[/url] staat wel wat, maar zo te zien kost dat bij een grote database nogal wat tijd. Verder zie je vaak dat mensen het met 2 tabellen doen. De ranking wordt als het ware 'gecached' in een tweede tabel (rankings). Ik weet niet of je de resultaten met een scripttaal verwerkt, maar anders zou je de ranking daar natuurlijk kunnen verwerken als je een ORDER BY hanteert. Ik vond ook [url=http://arjen-lentz.livejournal.com/55083.html]dit[/url] nog. Daar hebben ze nogal werk gemaakt van ranking queries :P
  • @LabRat: Tnx! Zelf heb ik dit nog gevonden: [code:1:c8a05e6f80] SET @rank=0; SELECT @rank:=@rank+1 AS rank, comment_author AS name, COUNT(*) AS amount FROM comments GROUP BY comment_author ORDER BY amount DESC LIMIT 0, 15; [/code:1:c8a05e6f80] Die doet het ook. probleem is alleen dat ik het (inderdaad) via PHP verwerk, en tot op heden krijg ik foutmeldingen als ik deze query middels 'while ($row = mysql_fetch_array($result))' probeer te lezen. Maar dat kan ook aan mij liggen, ik ga er nog verder mee.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.