Fórum update no campo com valor de outra tabela #391630
01/12/2010
0
Seguinte preciso setar o campo do valor do produto com custo dele. O preço do produto fica em uma tabela(pctabpr) e o custo esta em outra tabela(pcest). Eu fiz com um codigo de produto o seguinte sql:
update pctabpr set pctabpr.ptabela =(select pcest.custoultent from pcest where codprod=527 and codfilial =5)
where pctabpr.codprod =527 and numregiao =3
Com um produto apenas funciona, mas preciso fazer isso com todos os itens do B.D.
Desde já agradeço o help.
Marcos Souza
Curtir tópico
+ 0Posts
02/12/2010
Wilson Junior
Aguardo retorno.
Gostei + 0
02/12/2010
Marcos Souza
Vlw's
Gostei + 0
02/12/2010
Wilson Junior
UPDATE pctabpr SET pctabpr.ptabela =(SELECT pcest.custoultent FROM pcest WHERE pcest.codprod = pctabpr.codprod AND pcest.codfilial = 5) where pctabpr.numregiao = 3
Espero ter colaborado.
Gostei + 0
02/12/2010
Marcos Souza
Vlw mesmo
Gostei + 0
02/12/2010
Wilson Junior
Não esqueça de finalizar o tópico.
Gostei + 0
08/08/2013
Marcus Honorio
Estou tentando fazer o update de um campo de uma tabela, a partir de dados de uma outra. E estou utilizando a seguinte query
UPDATE CADMAT
SET CADMAT.DESCRICAO =(SELECT CADMAT5$.DESCRICAO FROM CADMAT5$ WHERE CADMAT5$.REFERENCIA = cadmat.referencia AND cadmat5$.GRUPO = cadmat.grupo)
Porém ao rodar a query, obtenho a mensagem do SQL:
Mensagem 512, Nível 16, Estado 1, Linha 1
A subconsulta retornou mais de 1 valor. Isso não é permitido quando a subconsulta segue um =, !=, = ou quando ela é usada como uma expressão.
A instrução foi finalizada.
Os campos GRUPO e REFERENCIA são os campos chaves que distinguem meus registros nas 2 tabelas
Grato desde já pela ajuda.
Abraços
Gostei + 0
09/08/2013
Marcos Souza
cadmat.grupo - voce esta tentando setar o grupo cadmat, porem ele nao consegue distinguir qual cadmat se existe mais de um. Se tiver 1,2,3,4 ele nao consegue separar.
O mesmo serve para referencia. Um dos dois ou os dois estao retornando valores identicos, sendo que ele consegue setar apenas um. Da um select na tabela para ver se existe essas informações duplicadas, pois tive o mesmo problema que voce em um update e tive que retirar os valores duplicados para setar.
Abç
Gostei + 0
09/08/2013
Marcus Honorio
GRUPO REFERENCIA
01 001235
02 001235
01 000347
04 000347
03 000213
VL 000213
Por isso a minha condição em dizer que where cadmat.grupo = cadmat5$.grupo AND cadmat.referencia = cadmat5$.referencia
Voce está me dizendo que em uma das 2 tabelas há uma duplicidade do tipo:
GRUPO REFERENCIA
01 001235
01 001235
??????????
Abraços e obrigado
Gostei + 0
09/08/2013
Marcos Souza
Gostei + 0
09/08/2013
Fabiano Carvalho
UPDATE CADMAT
SET CADMAT.DESCRICAO =(SELECT DISTINCT CADMAT5$.DESCRICAO FROM CADMAT5$ WHERE CADMAT5$.REFERENCIA = cadmat.referencia AND cadmat5$.GRUPO = cadmat.grupo)
Ou ainda
UPDATE CADMAT
SET CADMAT.DESCRICAO =(SELECT TOP 1 CADMAT5$.DESCRICAO FROM CADMAT5$ WHERE CADMAT5$.REFERENCIA = cadmat.referencia AND cadmat5$.GRUPO = cadmat.grupo)
Gostei + 0
09/08/2013
Fabiano Carvalho
UPDATE CADMAT
SET CADMAT.DESCRICAO =(SELECT DISTINCT CADMAT5$.DESCRICAO FROM CADMAT5$ WHERE CADMAT5$.REFERENCIA = cadmat.referencia AND cadmat5$.GRUPO = cadmat.grupo)
Ou ainda
UPDATE CADMAT
SET CADMAT.DESCRICAO =(SELECT TOP 1 CADMAT5$.DESCRICAO FROM CADMAT5$ WHERE CADMAT5$.REFERENCIA = cadmat.referencia AND cadmat5$.GRUPO = cadmat.grupo)
Vale lembrar que a melhor alternativa é utilizar JOIN
Gostei + 0
09/08/2013
Marcus Honorio
Eu rodei a query
SELECT DISTINCT grupo, referencia
FROM CADMAT
GROUP BY REFERENCIA, GRUPO
HAVING count(REFERENCIA) > 1
E vi que existiam 2 registros identicos.
Depois apliquei o update sugerido por voces.
Obrigado a todos pela ajuda.
Abraços
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)