MySQL Количество строк для каждого идентификатора в таблице - PullRequest
0 голосов
/ 16 июля 2011

Схема базы данных

----------------------------------------------------------
| id | killed | killed_by | killed_uuid | killed_by_uuid |
----------------------------------------------------------

killed и killed_by содержат тип объекта.например.«Игрок», «Окружающая среда», «Существо».Никаких подробностей.

killed_uuid и killed_by_uuid - идентификаторы пользователя, если игрок участвует в убийстве.

В этой таблице хранятся убийства, которые происходят на моем игровом сервере.Каждое убийство хранится в отдельной строке, поэтому для каждого игрока нет итогов.

Я хочу создать итоги для каждого идентификатора пользователя и создать из них таблицу лидеров.Таким образом, в основном, посчитайте строки, которые для каждого отдельного идентификатора пользователя.

Я пытался использовать

select killed_by_uuid, count(id)
from kills
where killed='999' AND killed_by='999'
group by killed_by_uuid
order by count(id) desc

999 в качестве идентификатора, который принадлежит игроку, убивает НЕ фактическийИДЕНТИФИКАТОР ПОЛЬЗОВАТЕЛЯ.Но все, что я получаю, это один набор результатов:

Array
(
    [0] => c676680f-98cb-4893-b1ba-ab5ab59fc272
    [killed_by_uuid] => c676680f-98cb-4893-b1ba-ab5ab59fc272
    [1] => 15
    [count(id)] => 15
)

Ответы [ 2 ]

4 голосов
/ 17 июля 2011
select killer, count(killer) as total_kills
from kills
where killed='player' and killed_by not in (<list of environment ids>)
group by killer
order by total_kills desc, killer
0 голосов
/ 16 июля 2011
SELECT COUNT(*) FROM KILLS WHERE KILLED=? AND KILLED_BY NOT IN (?, ?, ?, ?, ?, ...)
...