Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

youngrp

2 JOIN em um UPDATE

Recommended Posts

Ola pessoal, blzinha ? http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

To com um problema aqui que ta me deixando com dor de cabeça já :wacko:

A query faz um UPDATE em uma tabela mas precisa de 2 informações usadas no WHERE que estão cada uma em uma tabela diferente. O erro que ocorre é o seguinte:

 

Cannot resolve collation conflict for equal to operation.

 

A query é a seguinte:

UPDATE	CharacterSET	cLevel	   = 1,	Experience   = 0,	LevelUpPoint = @PontosReset * (Resets + 1),	Strength	 = @Forca,	Dexterity	= @Agilidade,	Vitality	 = @Vitalidade,	Energy	   = @Energia,	Money		= Money - @ZenReq,	Resets	   = Resets + 1FROM	Character	JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id	JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___idWHERE	cLevel > (@MaxLevel - 1)	AND Money > (@ZenReq - 1)	AND MEMB_STAT.ConnectStat = 0	AND MEMB_INFO.vip = 0
Tirando um dos JOINs e um dos WHERE a consulta vai numa boa, mas preciso destes dois dados.

 

Se alguem puder ajudar eu agradeço de coração http://forum.imasters.com.br/public/style_emoticons/default/wub.gif

 

 

Abraços a todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Lamento dizer, mas não dá para fazer junção de tabelas no UpDate.Post aí as tuas tabelas, pois você pode fazer dois updates em seguida, ou no caso, na mesma Procedure.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmmmm.... bom saber ;) Então, será que tem como fazer uma while igual no PHP ? Tipo assim no PHP eu faria uma consulta de reultados apenas que sejam vip=0 e faria um while mais ou menos assim:while ($results = mysql_fetch_array($sql)) { updates necessarios}Será que tem como fazer isso só que na linguagem do SQL, ou o que voces me recomendam ???Muitoo obrigado pessoal ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas se você colocar os updates, você vai fazer várias vezes.Bom, pode ser que seja essa a sua intenção.Mas tem que ver como é que você vai fazer os UpDates.Qto a php eu não sei nada, poste em SQL

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela atenção Eduardo.Entao parceiro, desculpe me referir ao PHP, é que eu mexo mais com ela e achei que ajudaria você a entender o que eu realmente quero.Na verdade é um unico update como mostrado acima, mas eu preciso capturar 2 dados, 1 em cada tabela para utiliza-los no WHERE.Será que teria algum outro método de fazer isso ? Tipo usando dois updates ?Se for possível gostaria de conversar com voce instantaneamente pelo MSN. O meu é: young@youngforce.com.brAcredito que poderei me expressar melhor e você entender o que eu quero.Muito obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não tenho MSN.Post as tabelas que você tem, que você quer usar no UpDate.Para fazer a alteração de acordo com as chave primárias e extrangeiras.Pois senão fica um pouco complicado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola,

 

Dei um Design Table em todas e estão aqui os Screen Shots.

O primeiro é da tabela Character, onde é feito o UPDATE e é usado algumas coisas no WHERE:

Imagem Postada

 

A segunda é a MEMB_INFO, que é usa para mim pegar os dados da coluna vip utilizado no WHERE:

Imagem Postada

 

E por ultimo a terceira, chamada MEMB_STAT, que eu pego o ConnectStat utilizado no WHERE:

Imagem Postada

 

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza... problema resolvido, era a linguagem da tabela COLLATE que estava diferente uma da outra. Pode usar dois JOIN's sim ;)

 

UPDATE	CharacterSET	cLevel	   = 1,	Experience   = 0,	LevelUpPoint = @PontosReset * (Resets + 1),	Strength	 = @Forca,	Dexterity	= @Agilidade,	Vitality	 = @Vitalidade,	Energy	   = @Energia,	Money		= Money - @ZenReq,	Resets	   = Resets + 1FROM	Character	JOIN MEMB_STAT ON Character.AccountID=MEMB_STAT.memb___id COLLATE Chinese_PRC_CS_AS	JOIN MEMB_INFO ON Character.AccountID=MEMB_INFO.memb___id COLLATE Chinese_PRC_CS_ASWHERE	cLevel > (@MaxLevel - 1)	AND Money > (@ZenReq - 1)	AND MEMB_STAT.ConnectStat = 0	AND MEMB_INFO.vip = 0

De qualquer forma agradeço a todos.

 

 

Grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu estava com problemas de collations na tabela que estava como SQL_CP850 e alguma coisa, e quando eu gravava algo acentuado pelo PHP, ele alterava na gravação, porém na consulta era mostrado corretamente na tela , agora a collation foi trocada para Latin1_general_CI_AS e a gravação fica correta mas na consulta volta trocado.Ex.: Eu gravo: ã á é í ó ú ç äquando faço um select é mostrado: Æ ‚ ¡ ¢ £ ‡ „Já mudei o charset da pagina pra 8859, pra 1252 e nada...Acredito que preciso so mudar no header da pagina.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.