Ir para conteúdo

POWERED BY:

Arquivado

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

Amilton Aquino

UPDATE com consulta

Recommended Posts

Olá amigos,Estou tentando atualizar registros em uma tabela onde entrariam na clausula WHERE uma chave de uma outra tabela. Tentei a consulta abaixo, mas não funcionou. O que está errado?$opcoes = $_GET['check'];foreach ($opcoes as $opcao) { $sql = "UPDATE users SET NEWS_SEND=2 WHERE USER_ID IN (SELECT * FROM users_cursos WHERE CURSO_ID=".$opcao.")"; mysql_select_db($database_webmais, $webmais); $resultado = mysql_query($sql); } Obs.: A tabela "users_cursos" está vinculada a tabela users através do id do usuário (USER_ID). Ou seja, a tabela users_cursos grava os IDs dos cursos que o usuário está matriculado. O update é uma seleção de usuários por turma.Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Eclesiastes,Fiz a alteração indicada, mas também não funcionou. Tentei também usando o JOIN, mas também não consegui sucesso. Segue abaixo esta outra tentativa:$sql = "UPDATE users a JOIN users_cursos b ON b.USER_ID = a.USER_IDSET a.NEWS_SEND=2WHERE b.CURSO_ID=1";Agradeço antecipadamente :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amilton, qual a vesao do mysql que você está usando ?

 

 

fiz um teste usando mysql 4.1 e funcionou, veja o script que montei:

 

 

instrução SQL

UPDATE aaSET aa.st = 2WHERE aa.ch IN ( SELECT bb.ch FROM bb WHEREbb.id = aa.id)

estrutura da tabela "aa"

 

CREATE TABLE aa (  id int(1) NOT NULL auto_increment,  ch char(1) default NULL,  st tinyint(1) NOT NULL default '1',  PRIMARY KEY  (id),  UNIQUE KEY id (id),  KEY id_2 (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

estrutura da tabela "bb"

 

CREATE TABLE bb (  id int(1) NOT NULL auto_increment,  ch char(1) default NULL,  st tinyint(1) NOT NULL default '1',  PRIMARY KEY  (id),  UNIQUE KEY id (id),  KEY id_2 (id)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insira esses dados pra testes:

 

INSERT INTO aa VALUES("1", "a", "1");INSERT INTO aa VALUES("2", "b", "1");INSERT INTO aa VALUES("3", "c", "1");INSERT INTO aa VALUES("4", "d", "1");INSERT INTO aa VALUES("5", "e", "1");INSERT INTO aa VALUES("6", "f", "1");INSERT INTO aa VALUES("7", "g", "1");INSERT INTO aa VALUES("8", "h", "1");INSERT INTO aa VALUES("9", "i", "1");INSERT INTO aa VALUES("10", "j", "1");INSERT INTO bb VALUES("1", "a", "1");INSERT INTO bb VALUES("2", "a", "1");INSERT INTO bb VALUES("3", "a", "1");INSERT INTO bb VALUES("4", "a", "1");INSERT INTO bb VALUES("5", "a", "1");INSERT INTO bb VALUES("6", "c", "1");INSERT INTO bb VALUES("7", "c", "1");INSERT INTO bb VALUES("8", "c", "1");INSERT INTO bb VALUES("9", "c", "1");INSERT INTO bb VALUES("10", "d", "1");INSERT INTO bb VALUES("11", "d", "1");INSERT INTO bb VALUES("12", "d", "1");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quero deixar um pouco mais dificil.

 

Também quero fazer uma consulta atualização(UPDATE) porém a segunda tabela utilizada (A tabela do Where) é uma CONSULTA (VIEW) e não uma tabela ja pronta e o campo que eu preciso atualizar, é um dado que esta nessa VIEW.

 

Usando o exempo acima, queria algo + ou - assim:

 

UPDATE aa

SET aa.st = bb.id (Quero usar um campo da Consulta aqui por exempo)

WHERE

aa.ch IN

(

SELECT bb.ch

FROM

bb

WHERE

bb.id = aa.id

) (O BB é uma View criada anteriormente e não uma tabela).

 

Consegui explicar ou enrolei muito?

 

Obrigado

Frank Costa

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.