Ir para conteúdo

Arquivado

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

Leonardo Vargas

Listar registros de uma tabela que não constem em outra tabela.

Recommended Posts

Direto ao ponto:

 

 

Tenho duas tabelas, uma é a "profissionais" e a outra "vinculos_profissionais".

 

tabela "Profissionais" tem:

id_profissional

titulo_profissional

 

 

tabela "vinculos_profissionais" tem:

id_vinculo

id_evento_vinculado

id_profissional_vinculado

 

 

Daí tem uma área onde deve aparecer os profissionais que já estão vinculados ao evento e em baixo deve aparecer somente todos aqueles que não estiverem vinculados ao evento.

 

Seria algo assim mas não sei como:

 

SELECT * profissionais (que não constem na tabela de vinculosprofissionais) ;

 

Alguém consegue dar uma luz?hehe

Compartilhar este post


Link para o post
Compartilhar em outros sites

$sql = '
SELECT *
FROM `eventos` as `e`, `vinculos_profissionais` as `v`
WHERE
	`v`.`id_evento_vinculado`='.$evento.' AND
	`e`.`id_profissional_vinculado` != `v`.`id_evento_vinculado`
';

Algo assim.

Não sabia pra q servia algumas colunas, e fiquei meio confuso. Mas essa é uma ideia. Outra ideia é usando SubQuerys.

Mas essa é a area de PHP. O que você quer deveria ter sido postado na area de Mysql.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para aparecer os que estão vinculados basta usar inner join ou fazer assim:

$consulta = "SELECT * FROM profissionais, vinculos_profissionais WHERE id_profissional_vinculado = id_profissional";
Para aparecer os que n estão vinculados tenta assim:

$consulta = "SELECT * FROM profissionais, vinculos_profissionais WHERE id_profissional_vinculado <> id_profissional";

Ve se funciona!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

inner join seleciona somente as tabelas que estiverem com relacionamento

select p.id_profissional,
   p.titulo_profissional,
   vp.id_evento_vinculado 
from 
   Profissionais p 
inner join 
   vinculos_profissionais vp
on 
   p.id_profissional = vp.id_profissional_vinculado

 

left join seleciona todos da tabela Profissionais mesmo não tendo relação com a tabela vinculos_profissionais

e com a clausula where não permitindo campos nulos somente seleciona os registros da tabela Profissionais

que não possuam relação com a tabela vinculos_profissionais

 

select p.id_profissional,
   p.titulo_profissional,	  
from 
   Profissionais p 
left join 
   vinculos_profissionais vp
on 
   p.id_profissional = vp.id_profissional_vinculado
where
   vp.id_profissional_vinculado is null

Compartilhar este post


Link para o post
Compartilhar em outros sites

select *

from Profissionais

where id_profissional not in (select id_profissional_vinculado

from vinculos_profissionais)

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.