Escolar Documentos
Profissional Documentos
Cultura Documentos
Sub-Consultas
SQL
Sub-Consultas
Sub-consulta: Expresso SQL ( Select From Where ) aninhada em outra consulta. Esta expresso em geral define um conjunto ou tabela utilizada na clausula WHERE no contexto de outra consulta.
Tipos de Consultas sobre esses conjuntos Pertencia ao conjunto definido pela sub-consulta ( IN, NOT IN ) Comparao com elementos da sub-consulta ( ALL, ANY ) Existncia e unicidade da sub-consulta( EXISTS, UNIQUE )
SQL - L. M. del Val Cura 2
Pertencia sub-consulta
Operador IN: Permite testar a pertencia de um valor ao conjunto definido por uma sub-consulta.
Ex: Nome dos empregados que trabalham em algum departamento localizado no 2do Andar
SELECT Nome FROM Empregado AS E WHERE E.CodDpto IN (SELECT Codigo FROM Departamento WHERE Local = 2doAndar)
Pertencia sub-consulta(2)
O operador IN pode ser utilizado com negao (NOT IN) permitindo consultas que no poderiam ser definidas com consultas simples. Ex: Nome dos Departamentos onde no trabalha nenhum empregado com salrio menor que R$ 1000.00
SELECT Nome FROM Departamento WHERE Codigo NOT IN (SELECT CodDpto FROM Empregado WHERE Salario > 1000.00)
SQL
Ex:
Nome e salario dos empregados de sexo feminino com salario maior a todos os empregados do departamento de cdigo 45
SELECT Nome, Salario FROM Empregado WHERE Sexo = F AND Salario > ALL(SELECT Salario FROM Empregado WHERE CodDpto =
45)
<> ALL
- L. M. del Val Cura 5
SQL
!!Note-se a possibilidade de utilizar uma varivel de tupla (E) da consulta principal dentro da consulta aninhada!!
SQL - L. M. del Val Cura 7
SQL
Ex: RG e sexo dos empregados que trabalham em todos os projetos controlados pelo Departamento de Cdigo 5.
SELECT RG, Sexo FROM Empregado AS E WHERE ( (SELECT Num FROM TrabalhaEmProjeto WHERE RG = E.RG) CONTENTS (SELECT Num FROM Projetos WHERE CodDpto = 5) )
SQL - L. M. del Val Cura 9
Ex: RG e sexo dos empregados que trabalham em todos os projetos controlados pelo Departamento de Cdigo 5.
SELECT RG, Sexo FROM Empregado AS E WHERE NOT EXISTS( (SELECT Num FROM Projetos WHERE CodDpto = 5) EXCEPT (SELECT Num FROM TrabalhaEmProjeto WHERE RG = E.RG) )
SQL - L. M. del Val Cura 10