Есть табличка, где складируется пойманная игроками в турнире рыба.
Выглядит примерно так
Синтаксис:
Используется csharp
CREATE TABLE `fishtrap` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`shid` bigint(20) DEFAULT NULL COMMENT 'ID игрока',
`fishid` int(11) DEFAULT NULL,
`wgt` int(11) DEFAULT NULL,
`inturnir` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`,`inturnir`)
) ENGINE=InnoDB AUTO_INCREMENT=85365974 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`shid` bigint(20) DEFAULT NULL COMMENT 'ID игрока',
`fishid` int(11) DEFAULT NULL,
`wgt` int(11) DEFAULT NULL,
`inturnir` bigint(20) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`,`inturnir`)
) ENGINE=InnoDB AUTO_INCREMENT=85365974 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Нужно определить победителя турнира. Для примера, при условии турнира на "общий вес всех пойманных", я делаю запрос
Синтаксис:
Используется csharp
SELECT ftr.shid AS uid, SUM(wgt) AS points
FROM fishtrap AS ftr
WHERE ftr.inturnir=2088
GROUP BY shid ORDER BY points DESC
FROM fishtrap AS ftr
WHERE ftr.inturnir=2088
GROUP BY shid ORDER BY points DESC
где shid - это ID игрока, а points - это его общий набранный в турнире вес.
Возникает вопрос, а как учесть не весь вес, а вес только трех/пяти крупнейших рыб, пойманных игроком? Учитывая, что он может и вовсе ни одной не поймать, и получить ноль очков..