UPDATE com SUBQUERY no MySQL

2,725 views
Skip to first unread message

:: guFigueiredo

unread,
Mar 19, 2008, 1:21:48 PM3/19/08
to LISTA PHP
Olá a todos,

Alguém sabe como fazer um UPDATE numa tabela usando subqueries?

Estou usando o seguinte comando:

UPDATE tb_casasClientes tb1 SET cliente = ( SELECT id FROM tb_clientes
tb2) where tb1.nomeCliente = tb2.nome

E o mysql me retorna:

Unknown column 'tb2.nome' in 'where clause'

...sendo que tb2.nome existe na tabela tb_clientes.

alguém tem uma luz?!

Ate+





Bruno Gross

unread,
Mar 19, 2008, 1:29:00 PM3/19/08
to list...@googlegroups.com
faz um select com esse subselect na tb1 e ve se traz alguma coisa

Em 19/03/08, :: guFigueiredo <gfcm...@gmail.com> escreveu:
Esta mensagem, incluindo seus anexos, pode conter informações confidenciais e/ou privilegiadas. Se você não for a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Caso esta mensagem tenha sido recebida por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida elimine-a do seu sistema. Agradecemos sua cooperação.

Tiago Gigli

unread,
Mar 19, 2008, 1:39:18 PM3/19/08
to list...@googlegroups.com
cara... tah complicado entender o q vc tem em mente com esse comando.
pelo q eu entendi vc quer fazer o seguinte

UPDATE
tb_casasClientes cc
JOIN tb_clientes c ON cc.nomeCliente = c.nome
SET
cc.cliente = c.id

2008/3/19 Bruno Gross <bruno...@gmail.com>:



--
Tiago Gigli
MyGSM: +55 (15) 8116-5168
Eml/MSN/GTalk: ti...@gigli.com.br
http://picasaweb.google.com/familia.gigli
http://tiago.gigli.com.br

Tiago Gigli

unread,
Mar 19, 2008, 1:39:43 PM3/19/08
to list...@googlegroups.com
detalhe.. update com joins soh no mysql mesmo.. mssql nao aceita..

2008/3/19 Tiago Gigli <ti...@gigli.com.br>:

Ronan Lucio

unread,
Mar 19, 2008, 1:42:10 PM3/19/08
to list...@googlegroups.com
UPDATE
tb_casasClientes
FROM
tb_casasClientes AS tb1, tb_clientes AS tb2
SET
tb1.cliente = tb2.id
WHERE
tb1.nomeCliente = tb2.nome


Não precisa de subquery e a performance do SQL fica bem melhor.

[]s
Ronan

:: guFigueiredo escreveu:

> .
>
>

:: guFigueiredo

unread,
Mar 19, 2008, 3:57:11 PM3/19/08
to LISTA PHP
Valeu thiago.....era isso mesmo que eu queria.......e mais simples do
que eu imaginava....rs!

Abraço a todos e obrigado.


Gustavo Figueiredo

Rogerio Goncalves

unread,
Mar 24, 2008, 7:28:50 AM3/24/08
to list...@googlegroups.com
e só pra corrigir o seu erro na sua query com subquery:


UPDATE tb_casasClientes tb1 SET cliente = ( SELECT id FROM tb_clientes
tb2 where tb1.nomeCliente = tb2.nome)


voce estava fechando o parênteses antes da cláusula where, que faz parte da subquery.. por isso o erro!


abracos

2008/3/19 :: guFigueiredo <gfcm...@gmail.com>:



--
[ Rogério Gonçalves ]

Francisco

unread,
Mar 24, 2008, 11:31:03 AM3/24/08
to LISTA PHP
Evite usar subqueries, você perde desempenho em suas querys ;)

On 24 mar, 08:28, "Rogerio Goncalves" <roge...@gmail.com> wrote:
> e só pra corrigir o seu erro na sua query com subquery:
>
> UPDATE tb_casasClientes tb1 SET cliente = ( SELECT id FROM tb_clientes
> tb2 where tb1.nomeCliente = tb2.nome)
>
> voce estava fechando o parênteses antes da cláusula where, que faz parte da
> subquery.. por isso o erro!
>
> abracos
>
> 2008/3/19 :: guFigueiredo <gfcme...@gmail.com>:
> [ Rogério Gonçalves ]- Ocultar texto entre aspas -
>
> - Mostrar texto entre aspas -
Reply all
Reply to author
Forward
0 new messages