Mam następującą tabelę:
CREATE TABLE IF NOT EXISTS `baza_pkt` ( `id` int(11) NOT NULL AUTO_INCREMENT, `idusera` int(11) DEFAULT NULL, `pkt` int(11) DEFAULT '0', `datadodania` date NOT NULL, `rodzajpkt` int(11) NOT NULL DEFAULT '0', UNIQUE KEY `id_2` (`id`), KEY `gt_id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
W tabeli znajdują się rekordy z punktami użytkowników.
Wpisów dla każdego usera są różne ilości (może być jeden, dwa... 10... 1000 itp).
Chciałbym zbudować ranking użytkowników (czyli zsumowane punkty dla każdego usera + posortowanie od największej do najmniejszej ilości pkt).
Ma ktoś może pomysł jak to zrobić?
Bardzo proszę o pomoc.
Próbowałem coś takiego:
SELECT id, idusera, pkt, rodzajpkt, FIND_IN_SET( pkt, ( SELECT GROUP_CONCAT( pkt ORDER BY pkt DESC ) FROM cms_users_pkt ) ) AS rank FROM cms_users_pkt ORDER BY rank ASC
Ale sortuje mi to po ilości punktów - bez uwzględnienia tego że parę userów może mieć po parę rekordów (nie sumuje ich)
Czy mógłbym prosić o pomoc?
Z góry dziękuje,
Northwest