PROBLEMA COM GROUP BY

EDUARDONICE 21/01/2014 08:43:13
#433309
Olá Pessoal

Estou começando a aprender o SQL e não estou conseguindo fazer uma coisa aparentemente simples. Pelo que li, tenho que usar Group by para realizar o que quero, mas vamos lá:
Tenho uma tabela no Access chamada Despesas onde existem as colunas Tipo, ValorDespesa, ValorPago, VeicDes.
Em uma outra tabela, Tipo de Despesas, tenho a descrição da despesa na coluna DescDesp.

O que eu quero fazer é um select que produza o resultado abaixo agrupado por tipo:
Tipo - Descrição da Despesa - Valor Despesa - Valor Pago

O que eu não consigo fazer é colocar a descrição da despesa (tentei colocar left join mas não está funcionando)
O meu select está assim:

Select d.TipoDes, Sum(d.VlDeDes), Sum(d.VlPgDes) from Despesas as d where d.VeicDes = 1 group by d.TipoDes;

Alguém poderia me ajudar?

NETMANIA 21/01/2014 09:17:34
#433312
Adicione também o campo d.TipoDes
EDUARDONICE 21/01/2014 09:54:32
#433318
Eu não entendi, já que o campo d.TipoDes está no select:

Select d.TipoDes, Sum(d.VlDeDes), Sum(d.VlPgDes) from Despesas as d where d.VeicDes = 1 group by d.TipoDes;

O select acima está funcionando, porém eu quero que traga também a descrição do tipo da despesa que está em outra tabela. Vou tentar explicar melhor:
As minhas tabelas estão assim:
Tabela: Despesas - Campos: (IdDes, TipoDes, VlDeDes, VlPgDes, VeicDes)
No banco: (1, 1, 100, 100, 1) (2, 1, 200, 0, 1) (3, 1, 50, 0, 1)

Tabela: TipoDespesas - Campos: (IdTDe, DescTDe)
No banco: (1, Gasolina)

Eu preciso de um select que me traga a somatória dos campos despesas(VlDeDes) e pagamentos (VlPgDes) agrupados por tipo (TipoDes) e que o tipo venha acompanhado da descrição (DescDes). Utilizando o exemplo acima o select teria que produzir:

TipoDes DescDes VlDeDes VlPgDes
1 Gasolina 350 100



GUIMORAES 21/01/2014 10:11:10
#433321
Resposta escolhida
Select tipoDespesas.descTde, Sum(d.VlDeDes), Sum(d.VlPgDes)
from Despesas as d
left join tipoDespesas on tipodespesas.idTDe = d.TipoDes
where d.VeicDes = 1
group by tipoDespesas.descTde;

Ou

Select tipoDespesas.descTde, Sum(d.VlDeDes), Sum(d.VlPgDes)
from Despesas as d, tipoDespesas
Where d.VeicDes = 1 and tipodespesas.idTDe = d.TipoDes
group by tipoDespesas.descTde;


Se você pesquisar um pouco achará a solução, um simples select deste com tabelas relacionadas não é difícil de se fazer.
EDUARDONICE 21/01/2014 10:29:57
#433323
Obrigado Guimoraes123

Na realidade, eu pesquisei algumas coisas e quando tentava via left join, o access me retornava a mensagem [Ô]Você tentou executar uma consulta que não inclui a expressão desctde especificada como parte de uma função agregada[Ô]. Como sou inexperiente em SQL, não percebi que o meu group by deveria ser feito por desctde e não por tipodes.

Agradeço a ajuda


Tópico encerrado , respostas não são mais permitidas