Vamos agora entender o poder desse operador. Nós podemos substituir o conteúdo que está enumerado entre parêntesis por uma cláusula SELECT que traga apenas um campo de valores válidos para a pesquisa. Isso permite que duas cláusulas SELECTs sejam feitas ao mesmo tempo, uma que identifica valores pesquisáveis e a outra que realiza a operação solicitada. Vamos ver um exemplo para ficar mais fácil entender essa questão:

C16 Quais são os nomes dos alunos que tiveram nota acima de 7 no ano de 2015.

Usando o operador JOIN, podemos escrever essa consulta assim:

SELECT A.Nome
FROM ALUNO AS A INNER JOIN HISTORICO_ESCOLAR AS H
ON A.ID_Aluno = H.ID_Aluno
WHERE H.Nota > 7 AND H.Ano = 2015.

Usando o operador IN, poderemos escrever a consulta que reflita “quais os nomes dos alunos, cujo ID_Aluno esteja em (Quais os ID_Alunos cujas notas são maiores que 7 e o ano igual a 2015)”. Isso seria escrito em SQL desse modo:

SELECT Nome
FROM ALUNO
WHERE ID_Aluno IN (
SELECT ID_Aluno
FROM HISTORICO_ESCOLAR
WHERE Nota > 7 AND Ano = 2015)

Observe como a cláusula SELECT que está entre parêntesis retornará os ID_Aluno daqueles que satisfazem a condição imposta. Esses ID_Aluno servirão de chave para a outra consulta SELECT pesquisar o nome dos alunos.

Copyright © 2014 AIEC.