Difference between revisions of "Oracle:Subqueries"

From mi-linux
Jump to navigationJump to search
(Created page with "Main Page >> Oracle and SQL >> Workbook >> Functions >> Subqueries == Subqueries == A subquery, or nested query is a ...")
 
Line 12: Line 12:
 
Subqueries are often used where you need to perform a calculation, or a check of some sort, where the result is then passed to the outer query. Subqueries can be used with comparison operators such as =, <, >, >=, <= etc. If using equals, only '''one''' result must be returned from the subquery, if more than one value is returned then either the IN or NOT IN comparison operator must be used instead of equals.  
 
Subqueries are often used where you need to perform a calculation, or a check of some sort, where the result is then passed to the outer query. Subqueries can be used with comparison operators such as =, <, >, >=, <= etc. If using equals, only '''one''' result must be returned from the subquery, if more than one value is returned then either the IN or NOT IN comparison operator must be used instead of equals.  
  
For example, the outer join query above that showed departments with no employees could be written as this instead:
+
For example, the [[Oracle:Outer_Join|outer join]] query that showed departments with no employees could be written as this instead:
  
 
  SELECT DEPTNO, DNAME
 
  SELECT DEPTNO, DNAME
Line 45: Line 45:
 
(SELECT  MAX(HIREDATE)  FROM  EMP)         
 
(SELECT  MAX(HIREDATE)  FROM  EMP)         
 
     
 
     
This should return the row you inserted for yourself in section 12.
+
This should return the row you inserted for yourself in Exercise 3.2.
  
  
 
== Next Step ==
 
== Next Step ==
  
Setting up [[Oracle_Getting_Started|the database]].
+
Working with[[Oracle:Date_functions|date values]].

Revision as of 14:41, 4 March 2016

Main Page >> Oracle and SQL >> Workbook >> Functions >> Subqueries

Subqueries

A subquery, or nested query is a query within a query. Subqueries are usually used in the WHERE part of the SQL statement, though you can also use nested expressions in place of column and table names, for example:

SELECT * FROM
(SELECT * FROM EMP);

Subqueries are often used where you need to perform a calculation, or a check of some sort, where the result is then passed to the outer query. Subqueries can be used with comparison operators such as =, <, >, >=, <= etc. If using equals, only one result must be returned from the subquery, if more than one value is returned then either the IN or NOT IN comparison operator must be used instead of equals.

For example, the outer join query that showed departments with no employees could be written as this instead:

SELECT DEPTNO, DNAME
FROM DEPT
WHERE DEPTNO NOT IN (SELECT DEPTNO FROM EMP);

Use a subquery to list all employees who are involved in a project:

SELECT  ENAME,  DEPTNO  FROM  EMP
WHERE  EMPNO IN     

(SELECT EMPNO FROM EMPPROJ);


A Group Function in a Subquery

If you include group functions in a SELECT command, you may not select individual results as well. For instance if you wanted to find the name of the employee who receives the highest salary, you cannot enter:

SELECT ENAME, MAX(SAL) .....

because this mixes individual and group functions. Instead you have to use a subquery:

SELECT  ENAME,  JOB,  SAL  FROM  EMP  
WHERE  SAL  =  
   (SELECT  MAX(SAL)  FROM  EMP);

Show the details of the latest employee to be hired by the company:

SELECT  ENAME,  JOB,  SAL  FROM  EMP   
WHERE  HIREDATE  =  

(SELECT MAX(HIREDATE) FROM EMP)

This should return the row you inserted for yourself in Exercise 3.2.


Next Step

Working withdate values.