高级SUM查询

时间:2015-11-01 05:38:19

标签: php mysql sum

我有以下查询:

function login(){
   userName = "username";
   password = "password";
   data = "userName=" + userName + "&" + "password=" + password;
   localReq = new XMLHttpRequest();

    // use an event handler here
    localReq.addEventListener("load", function(evt){
        if (localReq.status == 200) {
            responseJson = JSON.parse(localReq.responseText);
            alert("Success: " + localReq.responseText);
        } else {
            alert("Not Success!= :(");
            console.log(localReq);
        }
    });

    localReq.open("POST", "http://universe.tc.uvu.edu/cs2550/assignments/PasswordCheck/check.php", true);
    localReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    localReq.send(data);
}

给了我以下结果:

    SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j1 
UNION 
SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j2
UNION
SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j3 
UNION
SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j4

我只想总结这些结果!尝试使用sum()这种方式,但没有工作:

pont 
0
10
19
43

我在做SUM查询错了吗?如果是的话,我该怎么办呢?

3 个答案:

答案 0 :(得分:2)

你错过了语法。

这将有效

SELECT SUM(point) AS totalpont
      FROM
    (SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j1 
    UNION 
    SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j2
    UNION
    SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j3 
    UNION
    SELECT jogador.pont from jogador,usuarios WHERE email='like' and jogador.id=usuarios.j4) T

希望这有帮助

答案 1 :(得分:1)

使用UNION作为子查询生成结果,然后执行求和。

<强>查询

SELECT SUM(t.pont) as totalPont from
(
    SELECT jogador.pont from jogador,usuarios 
    WHERE email='like' and jogador.id=usuarios.j1 
    UNION 
    SELECT jogador.pont from jogador,usuarios 
    WHERE email='like' and jogador.id=usuarios.j2
    UNION
    SELECT jogador.pont from jogador,usuarios 
    WHERE email='like' and jogador.id=usuarios.j3 
    UNION
    SELECT jogador.pont from jogador,usuarios 
    WHERE email='like' and jogador.id=usuarios.j4
)t;

答案 2 :(得分:1)

没有测试过这个,但它会是这样的:

SELECT SUM(all.pont)
FROM 
(
    SELECT jogador.pont 
    FROM jogador,usuarios 
    WHERE email='like' 
    AND jogador.id=usuarios.j1 
    UNION 
    SELECT jogador.pont 
    FROM jogador,usuarios 
    WHERE email='like' 
    AND jogador.id=usuarios.j2
    UNION
    SELECT jogador.pont 
    FROM jogador,usuarios
    WHERE email='like' 
    AND jogador.id=usuarios.j3 
    UNION
    SELECT jogador.pont 
    FROM jogador,usuarios 
    WHERE email='like' 
    AND jogador.id=usuarios.j4
) AS all