[Resolvido]Dúvida em SELECT dentro do outro em MySQL

6 respostas
Ivan_Alves

Oi preciso fazer um select aninhado em MySQL porém o que eu estou tentando não está dando certo por exemplo caso ele não encontre nenhum dado referente a aquele usuário em uma tabela então retorne o os dados do primeiro select é mais ou menos assim

SELECT * FROM teste1 WHERE (SELECT * FROM teste2 WHERE teste2.id_usuario = 0 AND teste2.id_conta!=teste1.id) NOT EXISTS
//por exemplo se a tabela teste2 não for encontrado nenhum dado então execute o primeiro select da tabela teste1

Agradeço por qualquer ajuda!!

6 Respostas

Ivan_Alves

Consegui usei NOT EXISTS na antes do 2 select ficou mais ou menos assim:

ederfreitas

Pressuponho que você está utilizando FK entre as duas tabelas certo? E Quer listar todos os registros independente se tenha referência ou não tabela 2. Porque não utilizar usar junção de tabelas utilizando left join que retornará ambos os registros?

Ivan_Alves

ederfreitas:
Pressuponho que você está utilizando FK entre as duas tabelas certo? E Quer listar todos os registros independente se tenha referência ou não tabela 2. Porque não utilizar usar junção de tabelas utilizando left join que retornará ambos os registros?

http://www.luis.blog.br/left-join-e-inner-join-juncao-em-consultas-sql.aspx

Na verdade a intenção é só retornar o registro se ele não haver no 2º SELECT

daveiga

Bem, tente usar o IN no lugar do EXISTS , assim:

pmlm

[quote=daveiga]Bem, tente usar o IN no lugar do EXISTS , assim:

Ns realidade, o EXISTS deverá ser bem mais eficiente que o IN. O EXISTS irá parar assim que encontrar um registo que obedeça à condição, enquanto o IN irá executar todo o select para depois comparar valores.

Ivan_Alves

[quote=pmlm]

daveiga:
Bem, tente usar o IN no lugar do EXISTS , assim:

Ns realidade, o EXISTS deverá ser bem mais eficiente que o IN. O EXISTS irá parar assim que encontrar um registo que obedeça à condição, enquanto o IN irá executar todo o select para depois comparar valores.

vlw pela dica, então estou no caminho certo!

Criado 27 de junho de 2011
Ultima resposta 27 de jun. de 2011
Respostas 6
Participantes 4