Duvida Mysql - usar where[Resolvido]

9 respostas
rockstorm

Bom dia,

Estou fazendo uma consulta no banco de dados e me deparei com uma duvida.
Tenho a seguinte query:

SELECT  codigo,
           nome,
           sobrenome
           ( sum(valor1) + sum(valor2) + sum(valor3) +sum(valor4) + sum(valor5) + sum(valor6) + sum(valor7) ) as valortotal
 FROM tabela_teste
 GROUP BY cpf,codigo

A query funciona perfeitamente, só que preciso inserir uma condição para validar se o campo valortotal é 0. Só que o campo valortotal foi criado com AS!!
Na minha cabeça ficaria assim:

SELECT  codigo,
           nome,
           sobrenome
           ( sum(valor1) + sum(valor2) + sum(valor3) +sum(valor4) + sum(valor5) + sum(valor6) + sum(valor7) ) as valortotal
 FROM tabela_teste  WHERE valortotal = 0
 GROUP BY cpf,codigo

aparece o seguinte erro: Unknown column ‘valortotal’ in ‘where clause’

Como se não encontrasse o campo criado.
Alguma sugestão??
grato

9 Respostas

diego2005

Acho que ficaria assim:

SELECT codigo, nome, sobrenome ( sum(valor1) + sum(valor2) + sum(valor3) +sum(valor4) + sum(valor5) + sum(valor6) + sum(valor7) ) as valortotal FROM tabela_teste WHERE valortotal = 0 GROUP BY cpf,codigo WHERE ( sum(valor1) + sum(valor2) + sum(valor3) +sum(valor4) + sum(valor5) + sum(valor6) + sum(valor7) ) > 0

Não tenho certeza, mas acho que é isso…

fsquadro

Diego,

Eu também acho que vai funcionar, ia sugerir isso.

:slight_smile:

Robsonvnt

tenta usar assim

WHERE ( sum(valor1) + sum(valor2) + sum(valor3) +sum(valor4) + sum(valor5) + sum(valor6) + sum(valor7) ) = 0

GROUP BY cpf,codigo

porque o valortotal no caso não é uma coluna
talvez o MySQL não suporte isso tenta dessa forma ai

rockstorm

Ele deu erro neste ultimo WHERE…

rockstorm

Fiz o que o Robsonvnt disse mas deu o seguinte erro:

Invalid use of group function

Acho que ele nao suporta…

diego2005

Ops, foi mau, coloquei o where no lugar errado, seria assim:

SELECT codigo, nome, sobrenome ( sum(valor1) + sum(valor2) + sum(valor3) +sum(valor4) + sum(valor5) + sum(valor6) + sum(valor7) ) as valortotal FROM tabela_teste WHERE valortotal = 0 WHERE ( sum(valor1) + sum(valor2) + sum(valor3) +sum(valor4) + sum(valor5) + sum(valor6) + sum(valor7) ) > 0 GROUP BY cpf,codigo

Se não der certo também, eu não sei como resolver…

T+

diego2005

Já sei, faz assim:

SELECT codigo, nome, sobrenome ( sum(valor1) + sum(valor2) + sum(valor3) +sum(valor4) + sum(valor5) + sum(valor6) + sum(valor7) ) as valortotal FROM tabela_teste GROUP BY cpf,codigo HAVING ( sum(valor1) + sum(valor2) + sum(valor3) +sum(valor4) + sum(valor5) + sum(valor6) + sum(valor7) ) > 0

t+

rockstorm

realmente, acho que esse where não é valido…ainda continua dando o erro de Invalid use of group function

gratp

rockstorm

Valeu diego2005…funcionou…
Tinha que usar o HAVING…

OBRIGADO

Criado 26 de julho de 2007
Ultima resposta 26 de jul. de 2007
Respostas 9
Participantes 4