Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Listando quando nao existe em outra tabela

Boa tarde, Imagina que eu tenho uma tabela :

usuarios -> id - nome

e outra tabela:

turma -> id - usuario-id

Gostaria de fazer uma consulta que listasse os usuários que não existem na tabela turma.... Tentei RIGHT e LEFT JOIN. De varias maneiras possiveis, mas em nenhuma consegui o resultado desejado.

Se alguem poder ajudar, agradeço desde ja !

2 respostas

Os nomes das colunas não ficaram muito claras, mas você pode tentar usar o NOT IN para selecionar os id de usuarios que não estão na tabela turma.

select u.id, u.nome from usuario u where u.id not in (select t.usuario_id from turma t);

Leandro Meili, obrigado pela participação. Estou fazendo justamente isso, e isso resolver meu problema parcialmente...

Tenho que colocar algumas condições de busca para tabela usuario, porem, tentei de todas as maneiras mas em todas as consultas nao tenho nenhum registro retornado.

Ex, u.funcao='COORDENADOR'

Tentei adicionar essa condição da seguinte forma

select u.id, u.nome from usuario u where u.id not in (select t.usuario_id from turma t) and u.funcao='COORDENADOR';

tentei de outras maneiras, mas em nenhuma consegui retornar os registros ... Não posso adicionar mais de uma condição caso minha query possua um NOT IN ?