Witam serdecznie,
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