Consulta Usando SQL, ajuda.

Delphi

11/02/2009

Bom dia pessoal, estou com um problema usando uma consulta SQL, tenho a tabela de estoque com os seguintes códigos:

Codigo I Descricao V 50 Quant n CodLoja I
1 Bola 10 1
2 Bola 52
3 Bola 23
4 Bola 42

Gostaria de consultar dessa forma no grid

Descricao QuantLoja1 QuantLoja2 QuantLoja3
Bola10 92

Tentei fazer mas não consegui, alguém saberia como solucionar?


Virus69

Virus69

Curtidas 0

Respostas

Maikel

Maikel

11/02/2009

opa... não sei se entendi perfeitamente tua dúvida, mas não seria apenas o caso de definir a ordem dos campos na SQL, assim:

Select Descricao, QuantLoja1, QuantLoja2, QuantLoja3 from estoque


Ou ainda.... um simples
 Select * from estoque 
e depois adicionar os fields no DBGrid..... de um duplo clique sobre o ocomponente, adicione todos os campos e ordene conforme sua necessidade.

Espero que ajude.... qualquer coisa, post ai de novo

Att


GOSTEI 0
Sebastiaoarm

Sebastiaoarm

11/02/2009

Deve haver outra forma de obter o mesmo resultado. Aí vai uma delas, talvez não seja a melhor, mas funciona:

select
  Descricao,
  (select sum (Quant) from Tabela where CodLoja = 1) as ´QuantLoja1´, 
  (select sum (Quant) from Tabela where CodLoja = 2) as ´QuantLoja2´, 
  (select sum (Quant) from Tabela where CodLoja = 3) as ´QuantLoja3´    
from
  Tabela
group by
  Descricao



GOSTEI 0
Virus69

Virus69

11/02/2009

Fiz a consulta dessa forma

select estoque.Descricao, (select sum (estoque.quant) from estoque where CodLoja = ´1´) as QuantLoja1, (select sum (estoque.quant) from estoque where CodLoja = ´2´) as QuantLoja2, (select sum (estoque.Quant) from estoque where CodLoja = ´3´) as QuantLoja3
from estoque
group by estoque.Descricao


Só que onde tem QuantLoja1 os campos ficam todos com um valor apenas


GOSTEI 0
Virus69

Virus69

11/02/2009

Acabo de resolver a consulta, segue abaixo o código que fiz

IBDataSet1.CLOSE;
IBDataSet1.SelectSQL.Clear;
IBDataSet1.SelectSQL.Add(´select estoque.Descricao, (select sum (estoque.quant) from estoque where CodLoja = ´ + QuotedStr(´1´) + ´ AND estoque.COD LIKE:ACHA) as QuantLoja1, (select sum (estoque.quant) from estoque where CodLoja = ´ + QuotedStr(´2´) + ´ AND estoque.COD LIKE:ACHA) as QuantLoja2, (select sum (estoque.Quant) from estoque where CodLoja = ´ + QuotedStr(´3´) + ´ AND estoque.COD LIKE:ACHA) as QuantLoja3, (select sum (estoque.Quant) from estoque where CodLoja = ´ + QuotedStr(´4´) + ´ AND estoque.COD LIKE:ACHA) as QuantLoja4 from estoque´);
IBDataSet1.SelectSQL.ADD(´WHERE COD LIKE:ACHA ´);
IBDataSet1.SelectSQL.ADD(´group by estoque.Descricao´);
IBDataSet1.ParamByName(´ACHA´).AsString := EDIT1.Text;
IBDataSet1.OPEN;
if IBDataSet1.isempty then
BEGIN
MessageDLG(´Dados não localizados !´,mtError,[mbok],0);
END;


GOSTEI 0
POSTAR