exists in subquery : EXISTS « Query Select « Oracle PL/SQL Tutorial






SQL>
SQL> create table emp
  2  ( empno      NUMBER(4)    constraint E_PK primary key
  3  , ename      VARCHAR2(8)
  4  , init       VARCHAR2(5)
  5  , job        VARCHAR2(8)
  6  , mgr        NUMBER(4)
  7  , bdate      DATE
  8  , sal        NUMBER(6,2)
  9  , comm       NUMBER(6,2)
 10  , deptno     NUMBER(2)    default 10
 11  ) ;

Table created.

SQL> insert into emp values(1,'Tom','N',   'TRAINER', 13,date '1965-12-17',  800 , NULL,  20);

1 row created.

SQL> insert into emp values(2,'Jack','JAM', 'Tester',6,date '1961-02-20',  1600, 300,   30);

1 row created.

SQL> insert into emp values(3,'Wil','TF' ,  'Tester',6,date '1962-02-22',  1250, 500,   30);

1 row created.

SQL> insert into emp values(4,'Jane','JM',  'Designer', 9,date '1967-04-02',  2975, NULL,  20);

1 row created.

SQL> insert into emp values(5,'Mary','P',  'Tester',6,date '1956-09-28',  1250, 1400,  30);

1 row created.

SQL> insert into emp values(6,'Black','R',   'Designer', 9,date '1963-11-01',  2850, NULL,  30);

1 row created.

SQL> insert into emp values(7,'Chris','AB',  'Designer', 9,date '1965-06-09',  2450, NULL,  10);

1 row created.

SQL> insert into emp values(8,'Smart','SCJ', 'TRAINER', 4,date '1959-11-26',  3000, NULL,  20);

1 row created.

SQL> insert into emp values(9,'Peter','CC',   'Designer',NULL,date '1952-11-17',  5000, NULL,  10);

1 row created.

SQL> insert into emp values(10,'Take','JJ', 'Tester',6,date '1968-09-28',  1500, 0,     30);

1 row created.

SQL> insert into emp values(11,'Ana','AA',  'TRAINER', 8,date '1966-12-30',  1100, NULL,  20);

1 row created.

SQL> insert into emp values(12,'Jane','R',   'Manager',   6,date '1969-12-03',  800 , NULL,  30);

1 row created.

SQL> insert into emp values(13,'Fake','MG',   'TRAINER', 4,date '1959-02-13',  3000, NULL,  20);

1 row created.

SQL> insert into emp values(14,'Mike','TJA','Manager',   7,date '1962-01-23',  1300, NULL,  10);

1 row created.

SQL> create table offerings
  2  ( course     VARCHAR2(6)
  3  , begindate  DATE
  4  , trainer    NUMBER(4)
  5  , location   VARCHAR2(8)
  6  ) ;

Table created.

SQL> insert into offerings values ('SQL',date '2009-04-12',13,'DALLAS' );

1 row created.

SQL> insert into offerings values ('OAU',date '2009-08-10',4,'CHICAGO');

1 row created.

SQL> insert into offerings values ('SQL',date '2009-10-04',1,'SEATTLE');

1 row created.

SQL> insert into offerings values ('SQL',date '2009-12-13',1,'DALLAS' );

1 row created.

SQL> insert into offerings values ('JAV',date '2009-12-13',4,'SEATTLE');

1 row created.

SQL> insert into offerings values ('XML',date '2000-02-03',1,'DALLAS' );

1 row created.

SQL> insert into offerings values ('JAV',date '2000-02-01',11,'DALLAS' );

1 row created.

SQL> insert into offerings values ('PLS',date '2000-09-11',8,'DALLAS' );

1 row created.

SQL> insert into offerings values ('XML',date '2000-09-18',NULL,'SEATTLE');

1 row created.

SQL> insert into offerings values ('OAU',date '2000-09-27',13,'DALLAS' );

1 row created.

SQL> insert into offerings values ('ERM',date '2001-01-15',NULL, NULL    );

1 row created.

SQL> insert into offerings values ('PRO',date '2001-02-19',NULL,'DALLAS' );

1 row created.

SQL> insert into offerings values ('RSD',date '2001-02-24',8,'CHICAGO');

1 row created.

SQL>
SQL> select e.*
  2  from   emp e
  3  where  exists (select o.*
  4                 from   offerings o
  5                 where  o.course = 'SQL'
  6                 and    o.trainer = e.empno);

     EMPNO ENAME    INIT  JOB             MGR BDATE             SAL       COMM
---------- -------- ----- -------- ---------- ---------- ---------- ----------
    DEPTNO
----------
         1 Tom      N     TRAINER          13 17-12-1965        800
        20

        13 Fake     MG                      4 13-02-1959       3000
        20


SQL> drop table offerings;

Table dropped.

SQL> drop table emp;

Table dropped.

SQL>








2.18.EXISTS
2.18.1.EXISTS and NOT EXISTS Versus IN and NOT IN
2.18.2.Not Exist with subquery
2.18.3.Exist with subquery
2.18.4.Using the EXISTS Operator with subquery
2.18.5.not exists and subquery
2.18.6.exists in subquery