Subqueries<br />
Objectives<br />After completing this lesson, you should be able to do the following:<br />Describe the types of problems ...
Using a Subquery to Solve a Problem<br />“Who has a salary greater than Jones’?”<br />Main Query<br />“Which employees hav...
Subqueries<br />SELECTselect_list<br />FROMtable<br />WHEREexpr operator<br />		 	(SELECTselect_list<br />       FROMtable...
2975<br />SQL&gt; SELECT ename<br />2  FROM   emp<br />3  WHERE  sal &gt; <br />4		    (SELECT sal<br />5               FR...
Guidelines for Using Subqueries<br />Enclose subqueries in parentheses. <br />Place subqueries on the right side of the co...
Main query<br />returns<br />Subquery<br /><ul><li>Multiple-row subquery</li></ul>Main query<br />CLERK<br />MANAGER<br />...
Single-Row Subqueries<br />Return only one row<br />Use single-row comparison operators<br />Operator<br />=<br />&gt;<br ...
CLERK<br />1100<br />Executing Single-Row Subqueries<br />SQL&gt; SELECT   ename, job2  FROM     emp<br />3  WHERE    job ...
Using Group Functions in a Subquery<br />800<br />SQL&gt; SELECTename, job, sal<br />2  FROMemp<br />3  WHEREsal = <br />4...
HAVING Clause with Subqueries<br />800<br />The Oracle Server executes subqueries first.<br />The Oracle Server returns re...
What Is Wrong with This Statement?<br />SQL&gt; SELECT empno, ename<br />2  FROM   emp<br />3  WHERE  sal = <br />4		(SELE...
Will This Statement Work?<br />SQL&gt; SELECT ename, job<br />2  FROM   emp<br />3  WHERE  job = <br />4		(SELECTjob<br />...
Multiple-Row Subqueries<br />Return more than one row<br />Use multiple-row comparison operators<br />Operator<br />      ...
Using ANY Operator in Multiple-Row Subqueries<br />1300<br />1100<br />800<br />950<br />SQL&gt; SELECT  empno, ename, job...
Using ALL Operator in Multiple-Row Subqueries<br />1566.6667<br />2175<br />2916.6667<br />SQL&gt; SELECT  empno, ename, j...
Summary<br />Subqueries are useful when a query is based on unknown values.<br />SELECTselect_list<br />FROMtable<br />WHE...
Practice Overview<br />Creating subqueries to query values based on unknown criteria<br />Using subqueries to find out wha...
Upcoming SlideShare
Loading in …5
×

Les06 Subqueries

2,353 views
2,248 views

Published on

Published in: Travel
2 Comments
2 Likes
Statistics
Notes
No Downloads
Views
Total views
2,353
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
303
Comments
2
Likes
2
Embeds 0
No embeds

No notes for slide

Les06 Subqueries

  1. 1. Subqueries<br />
  2. 2. Objectives<br />After completing this lesson, you should be able to do the following:<br />Describe the types of problems that subqueries can solve<br />Define subqueries<br />List the types of subqueries<br />Write single-row and multiple-row subqueries<br />
  3. 3. Using a Subquery to Solve a Problem<br />“Who has a salary greater than Jones’?”<br />Main Query<br />“Which employees have a salary greater than Jones’ salary?”<br />?<br />Subquery<br />?<br />“What is Jones’ salary?”<br />
  4. 4. Subqueries<br />SELECTselect_list<br />FROMtable<br />WHEREexpr operator<br /> (SELECTselect_list<br /> FROMtable);<br />The subquery (inner query) executes once before the main query.<br />The result of the subquery is used by the main query (outer query).<br />
  5. 5. 2975<br />SQL&gt; SELECT ename<br />2 FROM emp<br />3 WHERE sal &gt; <br />4 (SELECT sal<br />5 FROM emp<br />6 WHERE empno=7566);<br />Using a Subquery<br />ENAME<br />----------<br />KING<br />FORD<br />SCOTT<br />
  6. 6. Guidelines for Using Subqueries<br />Enclose subqueries in parentheses. <br />Place subqueries on the right side of the comparison operator.<br />Do not add an ORDER BY clause to a subquery.<br />Use single-row operators with single-row subqueries.<br />Use multiple-row operators with multiple-row subqueries.<br />
  7. 7. Main query<br />returns<br />Subquery<br /><ul><li>Multiple-row subquery</li></ul>Main query<br />CLERK<br />MANAGER<br />returns<br />Subquery<br /><ul><li>Multiple-column subquery</li></ul>Main query<br />returns<br />CLERK 7900MANAGER 7698<br />Subquery<br />Types of Subqueries<br />Single-row subquery<br />CLERK<br />
  8. 8. Single-Row Subqueries<br />Return only one row<br />Use single-row comparison operators<br />Operator<br />=<br />&gt;<br /> &gt;= <br />&lt;<br /> &lt;= <br />&lt;&gt;<br />Meaning<br />Equal to<br />Greater than <br />Greater than or equal to <br />Less than <br />Less than or equal to<br />Not equal to<br />
  9. 9. CLERK<br />1100<br />Executing Single-Row Subqueries<br />SQL&gt; SELECT ename, job2 FROM emp<br />3 WHERE job = <br />4 (SELECT job5FROM emp6WHERE empno = 7369)<br />7 AND sal &gt; <br />8 (SELECT sal<br />9FROMemp<br />10WHEREempno = 7876); <br />ENAME JOB<br />---------- ---------<br />MILLER CLERK<br />
  10. 10. Using Group Functions in a Subquery<br />800<br />SQL&gt; SELECTename, job, sal<br />2 FROMemp<br />3 WHEREsal = <br />4 (SELECTMIN(sal)<br />5FROMemp);<br />ENAME JOB SAL<br />---------- --------- ---------<br />SMITH CLERK 800<br />
  11. 11. HAVING Clause with Subqueries<br />800<br />The Oracle Server executes subqueries first.<br />The Oracle Server returns results into the HAVING clause of the main query.<br />SQL&gt; SELECTdeptno, MIN(sal)<br />2 FROMemp<br />3 GROUP BYdeptno<br />4 HAVINGMIN(sal) &gt;<br />5 (SELECTMIN(sal)<br />6FROMemp<br />7WHEREdeptno = 20);<br />
  12. 12. What Is Wrong with This Statement?<br />SQL&gt; SELECT empno, ename<br />2 FROM emp<br />3 WHERE sal = <br />4 (SELECT MIN(sal)<br />5FROM emp<br />6GROUP BY deptno);<br />Single-row operator with <br />multiple-row subquery<br />ERROR:<br />ORA-01427: single-row subquery returns more thanone row<br />no rows selected<br />
  13. 13. Will This Statement Work?<br />SQL&gt; SELECT ename, job<br />2 FROM emp<br />3 WHERE job = <br />4 (SELECTjob<br />5FROMemp<br />6WHEREename=&apos;SMYTHE&apos;);<br />no rows selected<br />Subquery returns no values<br />
  14. 14. Multiple-Row Subqueries<br />Return more than one row<br />Use multiple-row comparison operators<br />Operator<br /> IN<br /> ANY<br /> ALL<br />Meaning<br />Equal to any member in the list<br />Compare value to each value returned by the subquery <br />Compare value to every value returned by the subquery <br />
  15. 15. Using ANY Operator in Multiple-Row Subqueries<br />1300<br />1100<br />800<br />950<br />SQL&gt; SELECT empno, ename, job<br />2 FROM emp<br />3 WHERE sal &lt; ANY <br />4 (SELECTsal<br />5FROMemp<br />6WHEREjob = &apos;CLERK&apos;)<br />7 AND job &lt;&gt; &apos;CLERK&apos;;<br /> EMPNO ENAME JOB<br />--------- ---------- ---------<br />7654 MARTIN SALESMAN <br />7521 WARD SALESMAN <br />
  16. 16. Using ALL Operator in Multiple-Row Subqueries<br />1566.6667<br />2175<br />2916.6667<br />SQL&gt; SELECT empno, ename, job<br />2 FROM emp<br />3 WHERE sal &gt; ALL <br />4 (SELECTavg(sal)<br />5FROMemp<br />6GROUP BYdeptno);<br /> EMPNO ENAME JOB<br />--------- ---------- ---------<br />7839 KING PRESIDENT<br />7566 JONES MANAGER<br />7902 FORD ANALYST<br />7788 SCOTT ANALYST<br />
  17. 17. Summary<br />Subqueries are useful when a query is based on unknown values.<br />SELECTselect_list<br />FROMtable<br />WHEREexpr operator<br /> (SELECT select_list<br />FROMtable);<br />
  18. 18. Practice Overview<br />Creating subqueries to query values based on unknown criteria<br />Using subqueries to find out what values exist in one set of data and not in another<br />

×