sql >> Database >  >> RDS >> Mysql

SQL om de meest populaire categorie te vinden

probeer dit. gebruik group by met de naam van de categorie. ik heb commentaar gegeven op de gemaakte at-clausule zoals je hebt gespecificeerd, je kunt het commentaar verwijderen als je het wilt gebruiken.

 SELECT c.name, SUM(ABS(v.item_id)) 
 FROM categories c,items i, votes v
 WHERE c.name = i.name
    AND i.item_id=v.item_id
    --AND v.created_at > #{1.week.ago}
 GROUP BY c.name 
 ORDER BY SUM(ABS(v.item_id)) DESC LIMIT 5;

je zult merken dat ik het JOIN-sleutelwoord niet heb gebruikt, maar in plaats daarvan de resultaten van de query heb gefilterd met alleen WHERE-clausules, wat misschien gemakkelijker te begrijpen is. als je meer wilt weten over JOINs, hier is een tutorial .

Ook hier is een tutorial over SQL-aliassen (de AS-clausule). in feite zijn er nog veel meer tutorials op deze site voor een heleboel verschillende SQL-onderwerpen die niet platformafhankelijk zijn.

bewerken: opgelost volgens opmerkingen, de abs-functie toegevoegd,



  1. Hoe databases exporteren via de opdrachtregel?

  2. hoe 2 tafels op deze manier te selecteren

  3. SQL-injectie en de LIMIT-clausule

  4. MySQL, het kopiëren van tabellenbestanden geeft aanleiding tot ERROR 1017 (HY000):Kan bestand niet vinden:ook al is het daar