Jump to content

POWERED BY:

Archived

This topic is now archived and is closed to further replies.

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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!!

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other sites

select *

from Profissionais

where id_profissional not in (select id_profissional_vinculado

from vinculos_profissionais)

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.