PROBLEMAS COM SUM EM MAIS DE UMA TABELA

GFASSIO 12/04/2010 16:22:13
#339138
Olá gente, tudo bem?

Seguinte quando eu faço essa consulta aqui abaixo, funciona perfeitamente:

Set Tabela = BD.OpenRecordset([Ô]select sum(tab_estoque.qtdade_dis)as Qtdade from material left join tab_estoque on material.codigo_mat=tab_estoque.codigo_mat where material.codigo_mat = [ô][Ô] + Text1.Text + [Ô][ô][Ô], dbOpenSnapshot)


Ou seja, está me somando o campo qtdade_dis na tabela estoque.

Porém , eu preciso de alguns campos que estão na tabela material, ai ficaria assim:

Set Tabela = BD.OpenRecordset([Ô]select material.descricao,material.valor, sum(tab_estoque.qtdade_dis)as Qtdade from material left join tab_estoque on material.codigo_mat=tab_estoque.codigo_mat where material.codigo_mat = [ô][Ô] + Text1.Text + [Ô][ô][Ô], dbOpenSnapshot)


Só que ele não aceita, mas eu preciso desses outro dois campos...
E tem que ser na mesma consulta pois nao posso fazer, por exemplo, uma consulta abaixo buscando esses dados.

Obrigado pela ajuda!
Desde já agradecido!

Gustavo Fássio
ASHKATCHUP 12/04/2010 16:47:55
#339142
Resposta escolhida
Tenta dar um Group by por esses dois campos.
GFASSIO 12/04/2010 17:27:04
#339144
Olá ASHKATCHUP, ele só deixa eu usar o group by por um campo, mais de um ele não deixa

O que posso fazer?

Obrigado pela ajuda!
ASHKATCHUP 12/04/2010 17:28:31
#339145
Na verdade, ele deveria deixar sim... posta a SQL aqui

GFASSIO 12/04/2010 17:31:31
#339147
Pra ser sincero eu nem sei como que faz com dois campos, coloquei das duas formas abaixo:

Set Tabela = BD.OpenRecordset([Ô]select material.descricao,material.valor, sum(tab_estoque.qtdade_dis)as Qtdade from material left join tab_estoque on material.codigo_mat=tab_estoque.codigo_mat where material.codigo_mat = [ô][Ô] + Text1.Text + [Ô][ô] group by (material.descricao), group by(material.valor) [Ô], dbOpenSnapshot)

Set Tabela = BD.OpenRecordset([Ô]select material.descricao,material.valor, sum(tab_estoque.qtdade_dis)as Qtdade from material left join tab_estoque on material.codigo_mat=tab_estoque.codigo_mat where material.codigo_mat = [ô][Ô] + Text1.Text + [Ô][ô] group by (material.descricao,material.valor) [Ô], dbOpenSnapshot)

Qual das duas é a certa, ou nenhum das duas rs?

abraços e obrigado pela ajuda!
ASHKATCHUP 12/04/2010 17:38:28
#339148
Nenhuma das duas... group by é uma cláusula de SQL normal, como Order e Select. Então, ela não precisa de parênteses.

Então, o certo é


Group By Material.Descricao, Material.Valor
GFASSIO 12/04/2010 17:39:42
#339149
Entendi, deu certinho, mas me explica uma coisa, o que esse group by faz?
Ele pode interferir no resultado da função SUM?

ASHKATCHUP 12/04/2010 18:02:57
#339150
Sim, ele vai interferir. O SUM é uma função de soma. Se você quer somar, você tem que informar qual tipo de agrupamento.
Por exemplo:

Somar o total de produtos vendido: será necessário pegar o produto e a quantidade

Sum(Db_Prod_quantidade),Db_Prod_Codigo

Eu acho que não tem sentido, no teu exemplo, usar o SUM sem Group by
Tópico encerrado , respostas não são mais permitidas