Skip to content Skip to sidebar Skip to footer

MySQL LEFT JOIN Query Shows Same Value

I am trying to make it so that this query below counts rows from another table that have the username, then deaths that have killer. There is 1 row per username in the stats table,

Solution 1:

SELECT st.*,
       SUM(pvp.killer = st.username) AS kills,
       SUM(pvp.username = st.username) as deaths
FROM stats AS st
LEFT JOIN pvp ON pvp.username = st.username OR pvp.killer = st.username
WHERE st.username = "Username"

DEMO

To do it for everyone, use GROUP BY:

SELECT st.*,
       SUM(pvp.killer = st.username) AS kills,
       SUM(pvp.username = st.username) as deaths
FROM stats AS st
LEFT JOIN pvp ON pvp.username = st.username OR pvp.killer = st.username
GROUP BY st.username

DEMO


Solution 2:

COUNT(foo) and COUNT(bar) both count the number of rows in the resultset, you might as well say COUNT(*) in both cases.

You need to COUNT(*) FROM ... GROUP BY killer to get the number of killers, for example. Not sure what the table structure is to give you a full answer.


Post a Comment for "MySQL LEFT JOIN Query Shows Same Value"