2011-07-16 53 views
0

數據庫結構mySQL的計數表中的

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

killedkilled_by保持實體類型對每個ID的行。例如。 「玩家」,「環境」,「生物」。沒有具體細節。

killed_uuidkilled_by_uuid是玩家參與殺戮時的用戶ID。

該表持有發生在我的遊戲服務器上的殺戮。每個擊殺都存儲在一個單獨的行中,因此每個玩家都沒有總計。

我想爲每個用戶ID創建總計並從它們創建一個排行榜。所以基本上,計算每個單獨的用戶ID的行數。

我一直在使用

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是屬於玩家實體ID殺不是實際USERID嘗試。但我得到的是一個結果集:

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

回答

4
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

爲我的密集而歡呼。我應該一直在取數組,它只是逐行存儲。你的回答是完全正確的。乾杯。 – Crimsonfox

0
SELECT COUNT(*) FROM KILLS WHERE KILLED=? AND KILLED_BY NOT IN (?, ?, ?, ?, ?, ...) 
+0

你可能會想在列'KILLED'添加索引也是如此。 – bdares

+0

難道那隻會計算一個用戶嗎? – Crimsonfox