ERRO AO EXECUTAR SQL UPDATE COM TABELAS UNIDAS
Olá, pessoal!
Sou iniciante na linguagem SQL e não estou conseguindo executar a seguinte tarefa:
Tenho um base de dados FDB (ME.FDB) na qual possui varias tabelas, porém no processo utilizo apenas duas, a tabela PRODUTOS_DESCRICOES (id_produto, descricao) e a tabela PRODUTOS_PRECOS (id_produto, produto_preco).
Enfim, o quero é que apenas os produtos que possuem em sua descrição a expressão DOTE ESM BL TRAD sofram alteração no preço de venda. Para isso usei a seguinte SQL.
UPDATE PRODUTOS_PRECOS
SET PRECO_VENDA = 2
FROM PRODUTOS_PRECOS
INNER JOIN PRODUTOS_DESCRICOES
ON PRODUTOS_PRECOS.ID_PRODUTO = PRODUTOS_DESCRICOES.ID_PRODUTO
WHERE PRODUTOS_DESCRICOES.DESCRICAO LIKE %DOTE ESM BL TRAD%
O EMS InterBase/Firebird Manager 3 retorna com o erro:
fmSQLEditor.Query:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 1.
FROM.
*A conexão com a base de dados é feita pelo Firebird 2.1.3
Desde já, agradeço pela cooperação!
Sou iniciante na linguagem SQL e não estou conseguindo executar a seguinte tarefa:
Tenho um base de dados FDB (ME.FDB) na qual possui varias tabelas, porém no processo utilizo apenas duas, a tabela PRODUTOS_DESCRICOES (id_produto, descricao) e a tabela PRODUTOS_PRECOS (id_produto, produto_preco).
Enfim, o quero é que apenas os produtos que possuem em sua descrição a expressão DOTE ESM BL TRAD sofram alteração no preço de venda. Para isso usei a seguinte SQL.
UPDATE PRODUTOS_PRECOS
SET PRECO_VENDA = 2
FROM PRODUTOS_PRECOS
INNER JOIN PRODUTOS_DESCRICOES
ON PRODUTOS_PRECOS.ID_PRODUTO = PRODUTOS_DESCRICOES.ID_PRODUTO
WHERE PRODUTOS_DESCRICOES.DESCRICAO LIKE %DOTE ESM BL TRAD%
O EMS InterBase/Firebird Manager 3 retorna com o erro:
fmSQLEditor.Query:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 3, column 1.
FROM.
*A conexão com a base de dados é feita pelo Firebird 2.1.3
Desde já, agradeço pela cooperação!
Raphael Noé
Curtidas 0
Respostas
William
30/05/2012
Colega até onde eu conheço sobre SQL, não se usa clausula FROM e operações UPDATE.
Na próprio UPDATE <TABELA> já está sendo informado o nome da tabela.
Na próprio UPDATE <TABELA> já está sendo informado o nome da tabela.
GOSTEI 0
Joel Rodrigues
30/05/2012
Acho que você vai precisar de uma subquery nesse caso.
UPDATE TABELA WHERE CAMPO IN (SELECT CAMPO FROM TABELA ...)
UPDATE TABELA WHERE CAMPO IN (SELECT CAMPO FROM TABELA ...)
GOSTEI 0