02/10/2013

update em tabelas puxando parametros de 2 tabelas ou mais

pessoal, tenho a seguinte estrutura

tabela itens da venda = tbvendas campo totpar, campo vendas, campo nritem
tabela master ecf= tbmasterecf campo numcoo, e campo dtmovi, pedido
tabelas itens ecf= tbitensecf campo numcoo, e campo dtmovi, e campo totpar, campo nritem

gostaria de pegar o valor da tabela tbitensecf do campo totpar e jogar para a tabela tbvendas de mesmo campo so que a questao e que preciso fazer o update baseando nas duas
tabelas tbmasterecf e tbitensecf pois os cupons estao divididos o cabecalho na tbmasterecf e os itens na tbitensecf na tbvendas o que tenho que e igual a tbmasterecf
e o campo vendas que na tbmasterecf e equivalente a pedido
gostaria de montar o comando o maximo que conseguir foi o comando abaixo o que nao dara certo pois preciso dar update pelo numero do pedido e codigo do
produto
onde preciso jogar o totpar na tbvendas no totpar pegando o totpar da tbitensecf mas que seja do mesmo pedido na tbvendas e tbmasterecf

UPDATE tbvendas SET tbvendas.TOTPAR

Respostas

02/10/2013

Jardiel Silva Currículo

pessoal, tenho a seguinte estrutura

tabela itens da venda = tbvendas campo totpar, campo vendas, campo nritem
tabela master ecf= tbmasterecf campo numcoo, e campo dtmovi, pedido
tabelas itens ecf= tbitensecf campo numcoo, e campo dtmovi, e campo totpar, campo nritem

gostaria de pegar o valor da tabela tbitensecf do campo totpar e jogar para a tabela tbvendas de mesmo campo so que a questao e que preciso fazer baseando nas duas
tabelas tbmasterecf e tbitensecf pois os cupons estao divididos o cabecalho na tbmasterecf e os itens na tbitensecf na tbvendas o que tenho que e igual a tbmasterecf
e o campo vendas que na tbmasterecf e equivalente a pedido
gostaria de montar o comando o maximo que conseguir foi o comando abaixo o que nao dara certo pois preciso dar update pelo numero do pedido e codigo do
produto
onde preciso jogar o totpar na tbvendas no totpar pegando o totpar da tbitensecf mas que seja do mesmo pedido na tbvendas e tbmasterecf

UPDATE tbvendas SET tbvendas.TOTPAR =(SELECT tbitensecf.TOTPAR FROM tbitensecf WHERE tbitensecf.CDPROD = tbvendas.CDPROD) WHERE tbvendas.TOTPAR=NULL
Responder Citar

11/10/2013

Jefferson Santos

Adicione um AND tbmasterecf.pedido = tbvendas.campopedidodatbvendas
na sua condição e se puder me diga se deu certo.
Responder Citar

14/10/2013

Jardiel Silva Currículo

Amigo nao deu certo fiz conforme voce me falou

UPDATE tbvendas SET tbvendas.TOTPAR =(SELECT tbitensecf.TOTPAR FROM tbitensecf WHERE tbitensecf.CDPROD = tbvendas.CDPROD) WHERE tbvendas.TOTPAR=NULL AND tbmasterecf.pedido = tbvendas.campopedidodatbvendas

mas me retornou

The multi-part identifier "tbmasterecf.pedido" could not be bound.
Responder Citar

15/10/2013

Jefferson Santos

Amigo segue Código que poderá te ajudar, lembrando que as tabelas devem ter ligação por FK, sem isso nada rola.
Antes de rodar o Update verifique a condição (Select) se achar o que quer nele com certeza o Update vai rodar sem problemas.
Se possível nos envie a estrutura correta para que possamos te ajudar.
O campo CDPROD por exemplo de onde surgiu no seu código? O campo pedido na tbVendas também não foi citado.

UPDATE tbvendas
SET TOTPAR =
(select i.totpar from tbitensecf i
inner join tbmasterecf m
ON
i.CDPROD = m.CDPROD
Inner Join tbvendas v
on
m.pedido = v.pedido
)
Responder Citar

16/10/2013

Jardiel Silva Currículo

tabela tbvendas
campos
vendas ( numero do pedido) tenho este campo na masterecf
cdprod ( codigo do produto) tenho este campo na itensecf
totpar (totalizador da ecf ) este campo ta null preciso pegar o valor da itensecf


tabela masterecf
campos
numcoo ( numero do cupom)
pedido ( numero do pedido)
dtmovi (data de emissao )


tabela itensecf
totpar (totalizador da ecf)
numcoo (numero do cupom)

quero pegar todos os totpar e jogar na tbvendas
Responder Citar

16/10/2013

Jardiel Silva Currículo

tabela tbvendas
campos
vendas ( numero do pedido) tenho este campo na masterecf
cdprod ( codigo do produto) tenho este campo na itensecf
totpar (totalizador da ecf ) este campo ta null preciso pegar o valor da itensecf


tabela masterecf
campos
numcoo ( numero do cupom)
pedido ( numero do pedido)
dtmovi (data de emissao )


tabela itensecf
totpar (totalizador da ecf)
numcoo (numero do cupom)
cdprod (codigo do produto)

quero pegar todos os totpar e jogar na tbvendas mas para isto preciso me basear no numero do pedido da masterecf e o totpar da itensecf
Responder Citar

17/10/2013

Jefferson Santos

Amigo a solução para a sua duvida é mais simples do que imaginávamos agora que temos a estrutura da tabela.
Basta criar uma FK - Chave estrangeira, com isso você liga a tabela itensecf e tabela masterecf e este registro liga a tabela tabela tbvendas.
Essa simples "ramificação" resolveria seu problema.

Para isso não precisa nem deletar suas tabelas existentes aplique um Alter Table criando uma constraint.
Responder Citar