Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Franca

Erro ao utilizar Subquery

Recommended Posts

Estou utilizando um banco de dados(sistemas de controle de chamados) da empresa onde trabalho, e tive a necessidade de realizar um update em um campo chamado de locations_id na tabela de chamados chamada de glpi_tickets.

 

OBS: Percebi que ao realizar o select ele me retorna varios ids, minha duvida é, como devo armazenar esse ids que vem da tabela glpi_groups_tickets para realizar um comparação com a tabela glpi_tickets para assim realizar o update?

 

update glpi_tickets set
locations_id = 2
where (select tickets_id from glpi_groups_tickets
where groups_id = 12);

 

me resulta esse erro:

subquery returns more than 1 row

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como é mais de 1 id, tem de verificar a lista, então terá de fazer uso do IN():

UPDATE glpi_tickets
SET locations_id = 2
WHERE tickets_id IN(
  SELET tickets_id
  FROM glpi_groups_tickets
  WHERE groups_id = 12
);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tranquilo...rs

 

Mas se eu rodasse o script dessa forma, daria erro de syntax:

 

Error Code: 1064. You have an error in your SQL syntax;

 

Coloquei esse scritp com a syntax correta e mesmo assim deu erro:

 

UPDATE glpi_tickets
SET locations_id = 2
WHERE tickets_id IN(
SELECT tickets_id
FROM glpi_groups_tickets
WHERE groups_id = 12
);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado lokaodomau (me sinto estranho falando seu apelido,rs)

 

O Scritp está correto, executei e deu certo, so tive que modificar a coluna que recebia os ids, após isso deu problema na hora de realizar o update, para solucionar esse impecilho, como utilizo o Worbench fui em Edit -> Preferences - > SQL Editor e desmarcar a opção "Safe Update". Forbid UPDATES and DELETS with no key in WHERE clause or no LIMIT clause.

 

E funcionou, muito obrigado!!

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.