1.2 - sub consultas
TRANSCRIPT
6/5/2010
1
Sub-Consultas
Cláudio Ratke
Conceitos
Uma subconsulta é uma instrução SELECT que é
incorporada em outra instrução SELECT.
Exemplos
SELECT lista_select
FROM tabela(s)
WHERE operador (SELECT lista_select colunax
FROM tabela);
SELECT lista_select, (SELECT lista_select
xFROM tabela)
FROM tabela(s)
SELECT lista_select
FROM (SELECT xFROM tabela)
WHERE
FROM
FIELD_LIST
HAVING SELECT lista_select, FUNCTION
FROM tabela(s)
GROUP BY lista_select
HAVING FUNCTION (SELECT xFROM tabela)
6/5/2010
2
Usando Sub-Consulta na cláusula Where
SELECT ename
FROM emp
WHERE sal >
(SELECT sal
FROM emp
WHERE empno=7566);
2975
salário do funcionário 7566. A consulta externa
obtém o resultado da consulta interna e o
utiliza para exibir todos os funcionários que
recebem mais que essa quantia
Usando Sub-Consultas na cláusula Where
SELECT ename, job
FROM emp
WHERE job =
(SELECT job
FROM emp
WHERE empno = 7369)
AND sal >
(SELECT sal
FROM emp
WHERE empno = 7876);
CLERK
1100
Usando Sub-Consulta na cláusula Where
SELECT ename, job, sal
FROM emp
WHERE sal =
(SELECT MIN(sal)
FROM emp);
800
6/5/2010
3
Usando Sub-Consulta na cláusula Where
SELECT ename, sal
FROM emp
WHERE (job, deptno) in (SELECT job, deptno
FROM emp
WHERE ename = 'ALLEN')
Usando Sub-Consulta na cláusula From
SELECT a.ename, a.sal, a.deptno
FROM (SELECT * FROM emp) a
SELECT a.ename, a.sal, a.deptno, b.salavg
FROM emp a
JOIN (SELECT deptno, avg(sal) salavg
FROM emp
GROUP BY deptno) b
USING (deptno)
WHERE a.sal > b.salavg;
Usando Sub-Consulta - cláusula Having
SELECT deptno, MIN(sal)
FROM emp
GROUP BY deptno
HAVING MIN(sal) >
(SELECT MIN(sal)
FROM emp
WHERE deptno = 20);