SQL - Subtrair duas consultas ?

09/07/2004

0

SQL

O caso é o seguinte

Tenho uma consulta que mostra todos os professores de um determinado aluno.

SELECT DISTINCT TP.CODPROF,TP.NOMEPROF,TD.DISCIPLINA FROM TBPROF TPR
INNER JOIN TBPROFESSOR  TP ON TPR.CODPROF=TP.CODPROF
INNER JOIN TBDISCIPLINA TD ON TPR.CODDISC=TD.CODDISC
WHERE TPR.CODTURMA= (
   SELECT CODTURMA FROM TBTURMA WHERE TURMA =(
      SELECT TURMA FROM TBALUNO WHERE USUARIO =106094
   )
)


Tenho também, uma tabela de controle onde insiro o código do aluno e o código do professor que aquele aluno avaliou.
OK

Para saber qual professor o aluno avaliou utilizo o código abaixo

SELECT CODPROF FROM TBCONTROLVOT WHERE USUARIO = 106094


Bom, consigo exibir todos os professores que o aluno já avaliou, mas o que eu quero é exatamente o contrário, ou seja, quero mostrar apenas os professores em que o aluno ainda não avaliou.

Utilizei o seguinte código para mostrar só os que foram avaliados pelo aluno
SELECT DISTINCT TP.CODPROF,TP.NOMEPROF,TD.DISCIPLINA FROM TBPROF TPR
INNER JOIN TBPROFESSOR  TP ON TPR.CODPROF=TP.CODPROF
INNER JOIN TBDISCIPLINA TD ON TPR.CODDISC=TD.CODDISC
INNER JOIN TBCONTROLVOT TC ON TC.CODPROF=TP.CODPROF
WHERE TPR.CODTURMA= (
   SELECT CODTURMA FROM TBTURMA WHERE TURMA =(
      SELECT turma from tbaluno where usuario =106094
   )
)


Tentei mudar a linha TC.CODPROF=TP.CODPROF para TC.CODPROF<>TP.CODPROF mas não funcionou (mostrou todos os prof)
Alguém sabe como se faz?

Valeu pela atenção

virtual


Virtual7

Virtual7

Responder

Posts

02/08/2004

Daniela

Veja

SELECT DISTINCT TP.CODPROF,TP.NOMEPROF,TD.DISCIPLINA FROM TBPROF TPR
INNER JOIN TBPROFESSOR TP ON TPR.CODPROF=TP.CODPROF
INNER JOIN TBDISCIPLINA TD ON TPR.CODDISC=TD.CODDISC
WHERE TPR.CODTURMA= ( SELECT CODTURMA FROM TBTURMA WHERE TURMA =( SELECT TURMA FROM TBALUNO WHERE USUARIO =106094 ) )
AND NOT EXISTS (SELECT CODPROF FROM TBCONTROLVOT WHERE USUARIO = 106094 AND TBCONTROLVOT.CODPROF = TP.CODPROF)

Como nao tenho as tabelas aqui criadas entao nao fiz um teste real, mas a ideia e essa procurar todos professores que nao exista na tabela ´subquery´.


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar