Ir para conteúdo

Arquivado

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

paginad

Consulta em 2 tabelas

Recommended Posts

Boa tarde.

 

Estou com uma necessidade aqui mas creio que não seja os INNERs que eu deva usar mas sim algum tipo de IF.

 

Vejam só:

 

Tabela 1

idContato

nome

idCanal

 

 

Tabela 2

idCanal

 

Eu preciso fazer uma SELECT que traga todos os contatos da Tabela 1, porém se tiver na Tabela 2 algum registro que coincida com o campo idCanal da Tablela 1, só mostrar os contatos cujo idCanal esteja na Tabela 2.

 

Resumindo: Se a tabela 2 estiver vazia, trago tudo da Tabela 1, se tiver algum registro na 2, cujo idCanal apareça na 1, só mostre esses canais listados na 2.

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma solucao

select *
from tabela1
where not exists (select null
                  from tabela2 
                  where tabela2.idcanal = tabela1.idcanal)
union all
select *
from tabela1
where exists (select null
              from tabela2
              where tabela2.idcanal = tabela1.idcanal)

Compartilhar este post


Link para o post
Compartilhar em outros sites
//SQL de consulta
SELECT * FROM tabela1 WHERE idcontato in (SELECT idcontato WHERE tabela2)

O resultado desta consulta você pode armazenar em uma variável e a verifique se está vazia. Neste exemplo utilizo a variável $resultado, mas você pode usar o nome que bem entender.

if( empty($resultado) ) //Verifica se o $resultado está vazio
{
//executa -> SELECT * FROM tabela1
}

Para resumir, observe: A primeira consulta busca todos os contatos que existem na tabela2. Caso a consulta não retornar nada, será feita então uma nova consulta de todos os contatos da tabela1.

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.