繁体   English   中英

计算2列以进行发生

[英]Count 2 columns for occurrence

所以基本上,我需要一个返回显示名称,杀戮量和死亡人数的查询。

我有两张桌子需要从中拉出来。

这两张桌子是

player

id      | name
2334324 | user
4353454 | user2

其中id是其唯一标识符, name是其显示名称。

第二个表是:

player_kill

id | killer  | victim  |
1  | 2334324 | 4353454 |
2  | 2334324 | 4353454 |  
3  | 4353454 | 2334324 |

killer / victim列包含player表的唯一标识符。

我希望能够计算killervictim中玩家ID的出现次数,以便查询返回:

name | kills | deaths
user | 2     | 1
user2| 1     | 2

杀戮下的数字将是playeridkiller栏中出现的数量,死亡人数相同

希望我提供了足够的信息。

到目前为止我所拥有的:

SELECT `player`.`name`, COUNT(DISTINCT `player_kill`.`id`) as `kills`, COUNT(DISTINCT `player_kill`.`id`) as `deaths`
FROM `player`
LEFT JOIN `player_kill` ON `player`.`id`=`player_kill`.`killer`
LEFT JOIN `player_kill` ON `player`.`id`=`player_kill`.`victim`
WHERE `player`.`id` = `player_kill`.`killer` AND `player`.`id` = `player_kill`.`victim`
GROUP BY `player`.`id`;

尝试

SELECT 
    p.name, 
    count(distinct pk1.id) as kills, 
    count(distinct pk2.id) as deaths
FROM player p
LEFT JOIN player_kill pk1 ON pk1.killer = p.id 
LEFT JOIN player_kill pk2 ON pk2.victim = p.id 
group by p.name

http://sqlfiddle.com/#!9/649504/15/0

看看这是否有效:

SELECT  `player`.`name`,
        COUNT(DISTINCT k.`id`) as `kills`,
        COUNT(DISTINCT v.`id`) as `deaths`
    FROM  `player`
    LEFT JOIN  `player_kill` AS k ON `player`.`id` = k.`killer`
    LEFT JOIN  `player_kill` AS v ON `player`.`id` = v.`victim`
    GROUP BY  `player`.`id`;

如果没有,那么我们可能需要将COUNT转换为子查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM