Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

KUROL3

Não entendi... SUM

Recommended Posts

não entendi esse select

 

Por quê se eu usar o campo que está em laranja o meu select não roda os registros aparece um único registro. se não colocar ele roda certinhu.

 

SELECT FBG.valor, SUM( FBG.valor ) AS valor_total, FBG.descricao, DATE_FORMAT( data_vencimento, '%d/%m/%Y' ) AS data_vencimento_OK, C.nome, FBG.id

FROM fin_boleto_gerado FBG

INNER JOIN clientes C ON ( C.id = FBG.id_cliente )

WHERE excluido =0

ORDER BY FBG.id DESC

LIMIT 0 , 28

 

KUROLE

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei quanto ao MySql, mas no Sql Server por exemplo é necessário que essa query seja agrupada pelos campos que não fazem parte de funções agregadoras como o SUM.

 

Tente fazer assim:

 

SELECT FBG.valor,SUM( FBG.valor ) AS valor_total, FBG.descricao, DATE_FORMAT( data_vencimento, '%d/%m/%Y' ) AS data_vencimento_OK, C.nome
FROM fin_boleto_gerado FBG
INNER JOIN clientes C ON ( C.id = FBG.id_cliente ) 
WHERE excluido =0
GROUP BY FBG.valor, FBG.descricao, data_vencimento, C.nome
ORDER BY FBG.id DESC 
LIMIT 0 , 28

O problema nesse caso é que você terá que decidir qual id de boleto será utilizado, caso cada linha tenha um id diferente.

 

não entendi esse select

 

Por quê se eu usar o campo que está em laranja o meu select não roda os registros aparece um único registro. se não colocar ele roda certinhu.

 

SELECT FBG.valor, SUM( FBG.valor ) AS valor_total, FBG.descricao, DATE_FORMAT( data_vencimento, '%d/%m/%Y' ) AS data_vencimento_OK, C.nome, FBG.id

FROM fin_boleto_gerado FBG

INNER JOIN clientes C ON ( C.id = FBG.id_cliente )

WHERE excluido =0

ORDER BY FBG.id DESC

LIMIT 0 , 28

 

KUROLE

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não quero agrupar eu quero somar sem agrupar.. (cada registo é um boleto gerado)....

 

eu não queria fazer issu

while(){

$valor_total += $array['valor'];

}

 

echo $valor_total ;

 

 

//esse efeito funciona porem não quero dar subquery

 

SELECT FBG.valor, (select sum(valor) from fin_boleto_gerado groub by valor ) AS valor_total, FBG.descricao, DATE_FORMAT( data_vencimento, '%d/%m/%Y' ) AS data_vencimento_OK, C.nome, FBG.id

FROM fin_boleto_gerado FBG

INNER JOIN clientes C ON ( C.id = FBG.id_cliente )

WHERE excluido =0

ORDER BY FBG.id DESC

LIMIT 0 , 28

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse comando "select sum(valor) from fin_boleto_gerado group by valor" faz a somatória de valores iguais, por exemplo:

 

id | valor

1 | 5

2 | 9

3 | 5

4 | 6

5 | 9

 

Um select do jeito que você escreveu retornaria 3 linhas

10 | (5 + 5)

18 | (9 + 9)

6 | (6)

 

Você está certo de que é isso que você precisa?

 

Pelo o que eu entendi da sua dúvida, você tem UM boleto com N produtos/valores associados, então para este boleto, o valor final seria a soma deles.

Para fazer este tipo de query sem subquerys é necessário usar o group by pois este comando ira agrupar informações redundantes e permitirá, por exemplo, a somatória da coluna valor.

 

Se você faz uma somatória sem agrupar linhas, significa que a somatória é o próprio valor!

Exemplo:

 

tipo | valor

1 | 5

1 | 10

2 | 2

1 | 7

3 | 8

1 | 2

 

Um select sem agrupamento nesta tabela e com um SUM(valor) apenas retornaria cada uma das 6 linhas, separadamente e sem soma nenhuma, pois não há critérios para que a soma seja realizada.

 

Já um select agrupando pelo tipo, por exemplo, significa que para cada tipo X eu quero a somatoria de valores deste tipo, então a query retornaria 3 linhas, cada uma com a somatória dos valores pelo tipo.

 

Se você não está tentando somar todos os valores vinculados a UM boleto específico, favor explicar melhor sua dúvida pois é provável que sua modelagem esteja errada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse comando "select sum(valor) from fin_boleto_gerado group by valor" faz a somatória de valores iguais, por exemplo:

 

id | valor

1 | 5

2 | 9

3 | 5

4 | 6

5 | 9

 

Um select do jeito que você escreveu retornaria 3 linhas

10 | (5 + 5)

18 | (9 + 9)

6 | (6)

 

Você está certo de que é isso que você precisa?

 

Pelo o que eu entendi da sua dúvida, você tem UM boleto com N produtos/valores associados, então para este boleto, o valor final seria a soma deles.

Para fazer este tipo de query sem subquerys é necessário usar o group by pois este comando ira agrupar informações redundantes e permitirá, por exemplo, a somatória da coluna valor.

 

Se você faz uma somatória sem agrupar linhas, significa que a somatória é o próprio valor!

Exemplo:

 

tipo | valor

1 | 5

1 | 10

2 | 2

1 | 7

3 | 8

1 | 2

 

Um select sem agrupamento nesta tabela e com um SUM(valor) apenas retornaria cada uma das 6 linhas, separadamente e sem soma nenhuma, pois não há critérios para que a soma seja realizada.

 

Já um select agrupando pelo tipo, por exemplo, significa que para cada tipo X eu quero a somatoria de valores deste tipo, então a query retornaria 3 linhas, cada uma com a somatória dos valores pelo tipo.

 

Se você não está tentando somar todos os valores vinculados a UM boleto específico, favor explicar melhor sua dúvida pois é provável que sua modelagem esteja errada.

 

o group esta de atrevido lá... esquece ele..

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.