2015-11-01 4 views
3

У меня есть следующий запрос:Расширенный SUM запрос

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 

, который дает мне следующий результат:

pont 
0 
10 
19 
43 

я просто хочу, чтобы подвести эти результаты! попытался использовать sum() таким образом, но не работал:

SELECT SUM(
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 totalpont 

Я делаю запрос SUM неправильно? если да, то как я могу сделать это правильно?

ответ

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 

Надеется, что это помогает

+0

нормально, теперь я получаю «Каждый производная таблица должна иметь свой собственный псевдоним» , что я делаю? – Frug

+0

Подождите, я забыл, что T в финале, большое спасибо !!!!!!! – Frug

+0

просто ждет времени .... почему этот T в финале исправляет мою ошибку? – Frug

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; 
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 
Смежные вопросы