COLUMNAS MYSQL SUMA DOS

Razer:

Tengo esta situación:

SELECT uf.*, SUM(uto.points) AS total_points_live, 
             SUM(utl.points) AS total_points_online,
             (total_points_live + total_points_online) AS total_points
FROM users AS uf    
            LEFT JOIN users_tourney_online AS uto
                ON uto.id_users = uf.id 
            LEFT JOIN users_tourney_live AS utl
                ON utl.id_users = uf.id
GROUP BY uf.id ORDER BY total_points DESC

Pero no funciona porque los alias no se pueden utilizar.

¿Me puedes ayudar?

Saludos,

GMB:

No se puede utilizar un alias definido en la misma SELECTcláusula se define.

Usted tendría que repetir la expresión:

SUM(uto.points) + SUM(utl.points) AS total_points

Si las SUMs pueden ser NULL:

COALESCE(SUM(uto.points), 0) + COALESCE(SUM(utl.points), 0) AS total_points

Alternativamente, se puede utilizar una subconsulta:

SELECT t.*, coalesce(total_points_live, 0) + coalesce(total_points_online, 0) total_points
FROM (
    SELECT uf.*, SUM(uto.points) AS total_points_live, SUM(utl.points) AS total_points_online
    FROM ...
    GROUP BY uf.id
) t
ORDER BY total_points desc

Nota sin relación: GROUP BYy SELECT *no ir a lo largo de bien juntos; es una buena práctica para enumerar todas las columnas no agregados en la GROUP BYcláusula (aunque MySQL es algo flojo sobre él).

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=402310&siteId=1
Recomendado
Clasificación