Array
(
)

update em tabelas puxando parametros de 2 tabelas ou mais

Jardiel Silva
   - 02 out 2013

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

Jardiel Silva
   - 02 out 2013

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

Jefferson Santos
   - 11 out 2013

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

Jardiel Silva
   - 14 out 2013

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.

Jefferson Santos
   - 15 out 2013

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.

#Código

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
)

Jardiel Silva
   - 16 out 2013

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

Jardiel Silva
   - 16 out 2013

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

Jefferson Santos
   - 17 out 2013

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.