KUROL3 3 Denunciar post Postado Julho 5, 2009 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
pedro.wtf 0 Denunciar post Postado Julho 5, 2009 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
giesta 29 Denunciar post Postado Julho 6, 2009 Pq tah sem o group by, entao ele pensa q eh pra agrupar tudo sem parametro de agrgaçao Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Julho 6, 2009 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
pedro.wtf 0 Denunciar post Postado Julho 7, 2009 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
KUROL3 3 Denunciar post Postado Julho 7, 2009 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