Infraestrutura do linux

çççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççççç

O que eu entendo daqui é que deves fazer de 3 maneiras distintas

  1. Subquery (in ou exists)
  2. INNER JOIN - é o que já tens
  3. JOIN feito no WHERE

Não faz sentido usar as 3 ao mesmo tempo e não existe “INNER JOIN” no where, o que existe é um join implicito, onde não é usada a palavra JOIN mas é feito select de duas tabelas e as condições de junção estão no where:

select * from disciplina, professor
where disciplina.professor = professor.cpf and professor.nome in 'Luciano Calderoni';

Deixo-te agora o desafio da subquery :slightly_smiling:

1 curtida

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

1 curtida

Tem atenção que, apesar de funcionar (ou talvez não, que aquele in deve ser = ), a tua subquery não usa o IN /Exists conforme pretendido:

select * 
  from disciplina 
 where disciplina.professor in (select cpf from professor where nome = 'Luciano Calderoni');

Ou então

 select * 
   from disciplina 
  where exists (select 1 from professor where nome = 'Luciano Calderoni' and disciplina.professor = professor.cpf );
1 curtida

xvcxcvcvbc