[英]MySQL LEFT JOIN columns are null
我正在嘗試使該查詢下面的內容計數來自具有用戶名的另一個表中的行。 stats表中的每個用戶名都有1行,而pvp表中的每個用戶名都包含多行。 從pvptable連接的所有列均顯示為null,並且使用COUNT動態生成的殺死和死亡事件。 這是SQL查詢。
SELECT
*,
pvptable.username AS USER,
COUNT(pvptable.killer) AS kills,
COUNT(pvptable.username) AS deaths,
ROUND(
COUNT(pvptable.killer) / COUNT(pvptable.username),
2
) AS kd
FROM
stats AS st
LEFT JOIN pvp AS pvptable
ON pvptable.killer = "Username"
AND pvptable.username = "Username"
WHERE st.username = "Username" ;
您正在混合where
和join
條件:
join
where
因此,使您的查詢工作:
SELECT
*, pvptable.username as user,
COUNT(pvptable.killer) as kills,
COUNT(pvptable.username) as deaths,
ROUND(COUNT(pvptable.killer) / COUNT(pvptable.username), 2) AS kd
FROM
stats as st
LEFT JOIN pvp as pvptable
ON pvptable.killer=st.Username -- Add some other relations if you need them
WHERE
st.username="Username";
對所需的每個統計信息進行聯接,然后使用COUNT(DISINCT id)(假設id是pvp表的唯一鍵),如下所示:-
SELECT st.username as user,
COUNT(DISTINCT pvptable_kills.id) as kills,
COUNT(DISTINCT pvptable_deaths.id) as deaths,
ROUND(COUNT(DISTINCT pvptable_kills.id) / COUNT(DISTINCT pvptable_deaths.id), 2) AS kd
FROM stats as st
LEFT OUTER JOIN pvp as pvptable_kills ON pvptable_kills.killer=st.Username
LEFT OUTER JOIN pvp as pvptable_deaths ON pvptable_deaths.username=st.Username
WHERE st.username="Username"
GROUP BY st.username
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.