coba ini. gunakan group by dengan nama kategori. saya telah mengomentari klausa yang dibuat di seperti yang Anda tentukan, Anda dapat membatalkan komentar jika Anda ingin menggunakannya.
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;
Anda akan melihat bahwa saya tidak menggunakan kata kunci JOIN tetapi memfilter hasil kueri hanya menggunakan klausa WHERE, yang mungkin lebih mudah dipahami. jika Anda ingin mempelajari lebih lanjut tentang GABUNG, inilah tutorialnya .
Ini juga tutorial tentang alias SQL (klausa AS). sebenarnya, ada lebih banyak tutorial di situs ini untuk sekumpulan topik SQL berbeda yang tidak bergantung pada platform.
edit: diperbaiki sesuai komentar, menambahkan fungsi abs,