Php 具有相同值的MySQL左连接查询问题

Php 具有相同值的MySQL左连接查询问题,php,mysql,sql,left-join,Php,Mysql,Sql,Left Join,我试图这样做,以便下面的查询计算另一个表中具有用户名的行,然后计算具有用户名的死亡。在stats表中,每个用户名有一行,但在pvp表中有多行具有用户名。出于某种原因,死亡栏和死亡栏的数量相同,有人知道为什么吗?这是我的查询,这是一个sql FIDLE我想我做对了idk如何使用SQLFIDLE: 您正在计算同一表中的两列。当然,您将拥有相同的计数。尝试使用DISTINCT表达式,count(pvtable.killer)正在计算结果集中具有非空值的pvtable.killer行数。假定killer

我试图这样做,以便下面的查询计算另一个表中具有用户名的行,然后计算具有用户名的死亡。在stats表中,每个用户名有一行,但在pvp表中有多行具有用户名。出于某种原因,死亡栏和死亡栏的数量相同,有人知道为什么吗?这是我的查询,这是一个sql FIDLE我想我做对了idk如何使用SQLFIDLE:


您正在计算同一表中的两列。当然,您将拥有相同的
计数。尝试使用
DISTINCT
表达式,
count(pvtable.killer)
正在计算结果集中具有非空值的
pvtable.killer
行数。假定
killer
username
的值从不为
NULL
,因此它们返回相同的值

也许您想计算不同的值:

SELECT 
    *,
    COUNT(distinct pvptable.killer) as kills,   
    COUNT(distinct pvptable.username) as deaths,
    ROUND(COUNT(distinct pvptable.killer) / COUNT(distinct pvptable.username), 2) as kd
FROM
    stats as st
    LEFT JOIN pvp as pvptable ON pvptable.killer=st.username
WHERE
    st.username="Username";

我想补充一点,回答你的问题异常困难。您应该提供示例数据和所需结果,以及您尝试的查询。经验表明,期望的结果可以很好地有效地沟通问题。

不需要“pvp作为pvptable”。别名应该更短。。。比如“用户即你”,然后用一个固定的解决方案回答?这不是一个解决方案,只是一个评论。因此。。。。。注释。您的表名“stats”的名称是否可能重复?
SELECT 
    *,
    COUNT(distinct pvptable.killer) as kills,   
    COUNT(distinct pvptable.username) as deaths,
    ROUND(COUNT(distinct pvptable.killer) / COUNT(distinct pvptable.username), 2) as kd
FROM
    stats as st
    LEFT JOIN pvp as pvptable ON pvptable.killer=st.username
WHERE
    st.username="Username";