Query

1 resposta
edymrex

Galera não estou entendendo o retorno desta query:

SELECT t1.* FROM department t1 WHERE t1.location IN
(SELECT t2.location
          FROM department t2
          WHERE t1.dept_no <> t2.dept_no)

A estrutura da tabela é a seguinte:

CREATE TABLE department(dept_no   CHAR(4) NOT NULL,
                         dept_name CHAR(25) NOT NULL,
                         location  CHAR(30) NULL)

 insert into department values ('d1', 'developer',   'Dallas')
 insert into department values ('d2', 'tester',      'Seattle')
 insert into department values ('d3', 'marketing',  'Dallas')

10> select * from department
1 GO

(1 rows affected)

(1 rows affected)

(1 rows affected)
dept_no dept_name                 location
------- ------------------------- ------------------------------
d1      developer                 Dallas
d2      tester                    Seattle
d3      marketing                 Dallas

(3 rows affected)
 -- Correlated subquery using the department table in both inner and outer queries

Peguei essa tabela de exemplo para dar uma estudada em subquerys,
pelo que eu entendi para cada registro da 1ª query ele verifica todos os registros da 2ª query
que neste caso é minha subquery a idéia e essa mesma…?

1 Resposta

heberfa

Cara escrevendo em portugues é o seguinte

SELECT t1.* FROM department t1 WHERE t1.location IN  
   (SELECT t2.location  
              FROM department t2  
             WHERE t1.dept_no <> t2.dept_no)

Pegue todos os departamentos que estão no mesmo lugar desse departamento mas não seja o mesmo departamento.

flw
Heber

http://www.heberfa.com.br

Criado 3 de julho de 2008
Ultima resposta 4 de jul. de 2008
Respostas 1
Participantes 2