Consulta Usando SQL, ajuda.
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?
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
Curtidas 0
Respostas
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:
Ou ainda.... um simplese 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
Select Descricao, QuantLoja1, QuantLoja2, QuantLoja3 from estoque
Ou ainda.... um simples
Select * from estoque
Espero que ajude.... qualquer coisa, post ai de novo
Att
GOSTEI 0
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
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
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
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;
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