USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Ajuda com instrução SQL
Edson
não registrado
Postada em 26/06/2006 11:54 hs   
Por favor, tenho a seguinte dúvida. como construir uma instrução SQL que me retorne o último registro da tabela filho. Ex:
 
Produtos :  ProdutoID  Descricao
                          1   Cerveja Antarctica
                          2   Cerveja Skol
                          3   Cerveja Skol Bock
 
Estoque:    EstoqueID ProdutoID DataMovimentacao Entradas Saidas Saldo
                          1             1  01/01/2006                100         0     100
                          2             1  01/01/2006                   0         5       95
                          3             1  02/01/2006                   0         5       90
 
Gostaria de selecionar todos os produtos e mostrar só o saldo atual de cada um.
 
Grato pela atenção.
    
     
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
Postada em 26/06/2006 15:39 hs            
Bom, seria mais facil se tivesse colocado um campo estoque na tabela de produtos e a cada movimentação ir atualizando, teria o estoque sempre atualizado trabalhando em apenas uma tabela.
Tente ver se funciona assim:
"select EstoqueID Max(dataMovimentação) from Estoque where ProdutoID='" & Text1.Text & "'"
 
vlu//
     
Martini
Pontos: 2843 Pontos: 2843
PAROBÉ
RS - BRASIL
Postada em 27/06/2006 08:41 hs         

-- Produtos :  ProdutoID  Descricao
--                           1   Cerveja Antarctica
--                           2   Cerveja Skol
--                           3   Cerveja Skol Bock
-- 
-- Estoque:    EstoqueID ProdutoID DataMovimentacao Entradas Saidas Saldo
--                           1             1  01/01/2006                100         0     100
--                           2             1  01/01/2006                   0         5       95
--                           3             1  02/01/2006                   0         5       90


create table #Produtos
 (
  ProdutoID Integer,
  Descricao Varchar(20)
 )


create table #Estoque
 (
  EstoqueID integer,
  ProdutoID integer,
  DataMovimentacao datetime,
  Entradas integer,
  Saidas integer,
  Saldo integer
 )

set nocount on

insert into #Produtos (ProdutoID, Descricao) values (1, 'Cerveja Antarctica')
insert into #Produtos (ProdutoID, Descricao) values (2, 'Cerveja Skol')
insert into #Produtos (ProdutoID, Descricao) values (3, 'Cerveja Skol Bock')

insert into #Estoque (EstoqueID, ProdutoID, DataMovimentacao, Entradas, Saidas, Saldo) values (1, 1, '01/01/2006',100,0,100)
insert into #Estoque (EstoqueID, ProdutoID, DataMovimentacao, Entradas, Saidas, Saldo) values (2, 1, '01/01/2006',0,5,95)
insert into #Estoque (EstoqueID, ProdutoID, DataMovimentacao, Entradas, Saidas, Saldo) values (3, 1, '02/01/2006',0,5,90)


select
 #Estoque.ProdutoID,
 a.DataMovimentacao,
 #Estoque.Saldo
from #Estoque
inner join (
 select
  ProdutoID,
  max(DataMovimentacao) DataMovimentacao
 from #Estoque
 group by ProdutoID
)a on a.ProdutoID = #Estoque.ProdutoID and a.DataMovimentacao = #Estoque.DataMovimentacao
inner join #Produtos on #Produtos.ProdutoID = #Estoque.ProdutoID

drop table #Produtos
drop table #Estoque

 
     
edson
não registrado
Postada em 27/06/2006 14:06 hs   
LCRamos, Obrigado por responder, mas desta maneira eu perco os históricos da movimentação.
 
Martini, Obrigado por respoder, vou tentar desta forma,
 
Grato pela atenção.
     
LCRamos
Pontos: 2843
GOIANIA
GO - BRASIL
Postada em 27/06/2006 14:46 hs            
Edson,  voce não perde o histórico da movimentação, pois ela continua na tabela, e isto faz ficar mais rápido, já pensou toda vez que o cliente quiser saber o estoque de um determinado produto voce tem que fazer esta sql, e se for para colocar o ID do produto, descrição, etc. e estoque junto, tudo em um grid, não fica mais fácil um campo atualizado no produto?
 
vlu//
     
edson
não registrado
Postada em 27/06/2006 17:23 hs   
Ok, LCRamos, vou testar, mas ainda acho meio esquisito.
 
Grato pela atenção.
     
Página(s): 1/2      PRÓXIMA »


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2025   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página