2013-10-21 41 views
1

我在訂購具有計數和比率的MySQL查詢時遇到了麻煩。如何訂購具有計數和比率的MySQL查詢

這是我目前使用

$getKillers = mysql_query("SELECT `killer`, `killed`, count(`killer`), count(`killed`) FROM `kills` GROUP BY `killer` ORDER BY count(`killer`)/count(`killed`) DESC LIMIT {$limit}"); 

此代碼的數據庫結構,我使用

CREATE TABLE `kills` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `killer` varchar(20) NOT NULL COMMENT 'The player who scored the kill', 
    `killed` varchar(20) NOT NULL COMMENT 'The player who was killed', 
    PRIMARY KEY (`id`), 
    KEY `killer` (`killer`,`killed`) 
) ENGINE=InnoDB AUTO_INCREMENT=680633 DEFAULT CHARSET=utf8 COMMENT='PVP Log'; 

-- ---------------------------- 
-- Records of kills 
-- ---------------------------- 
INSERT INTO `kills` VALUES ('1', 'Player1', 'Player2'); 
INSERT INTO `kills` VALUES ('2', 'Player1', 'Player3'); 
INSERT INTO `kills` VALUES ('3', 'Player2', 'Player3'); 
INSERT INTO `kills` VALUES ('4', 'Player2', 'Player1'); 
INSERT INTO `kills` VALUES ('5', 'Player1', 'Player2'); 
INSERT INTO `kills` VALUES ('6', 'Player3', 'Player3'); 
INSERT INTO `kills` VALUES ('7', 'Player2', 'Player3'); 
INSERT INTO `kills` VALUES ('8', 'Player3', 'Player1'); 

我想這個SQL使用mysql_fetch_array在PHP中顯示前PVP與KDR(殺死死亡比率)是殺手殺手。這是他們殺死他人的次數。

感謝您的幫助!

+0

那麼,有什麼輸出呢? – geomagas

+0

PVP是指玩家與玩家? –

+0

檢查此[SQLFiddle](http://sqlfiddle.com/#!2/e5ca1/4)KDR是否這是你想要的。 –

回答

1

嘗試此查詢:

SELECT * , (SELECT COUNT(1) 
      FROM kills b 
      WHERE nested.killer = b.killed 
      ) AS killed_cnt 
FROM ( 
    SELECT `killer` , COUNT( `killer`) AS kill_cnt 
    FROM `kills` a 
    GROUP BY `killer` 
) nested 
ORDER BY kill_cnt/killed_cnt DESC 
LIMIT 10 
+0

對不起,您的查詢會使網頁顯示「內部服務器錯誤 500」 – JayNZ

+0

我在phpmyadmin中檢查過它 - 一切正常,如果您有「內部服務器錯誤500」,請檢查您的php錯誤日誌,並檢查您的php文件語法(php -l your_file.php) – ziollek