Hay varios asuntos en esto:
1) Cuando usas funciones agregadas junto a campos no afectados por una función agregada, debe indicarse cuál es el criterio de agrupamiento, es decir, debe usarse GROUP BY.
2) Cuando vas a realizar JOINs sobre diferentes campso de una misma tabla, se la debe invocar por separado en el FROM asignándole alias. No es funcional el OR en ese caso.
3) Si algún valor puede que no exista en el JOIN, debe usarse o LEFT o RIGHT como cláusula del JOIN, según sea la forma de leer las tablas.
4) Cualquier campo que pueda devolver NULL, debe ser conrolado al menos por IFNULL().
5) No se puede usar la coma (,) como sinónimo de JOIN si existen los mismos nombres de campos en más de una tabla. MySQL intentará emparejar todos los campos del mismo nombre, cosa que puede dar resultados erráticos.
6) Usa alias para tablas y campos. Simplifica la lectura.
7) No uses los mismos nombres en las tablas que en los campos contenidos en ella (usuario.usuario es una mala idea). MySQL puede confundir por cuestiones de jerarquía los nombres y asume siempre que el objeto de mayor jerarquía (la base o la tabla) son los invocados.
... Ect., etc.
Prueba con algo así:
Código MySQL:
Ver original U.usuario,
IFNULL(E.puntos
,0) PuntosEquipo
Usuarios U
U.id_partida = $p