Home >> FAQs/Tutorials >> Oracle DBA FAQ >> Index

Oracle DBA FAQ - Understanding SQL SELECT Query Statements

By: FYIcenter.com

Part:   1  2  3  4  5  6   7  8 

(Continued from previous part...)

How To Write a Query with a Right Outer Join?

If you want to query from two tables with a right outer join, you can use the RIGHT OUTER JOIN ... ON clause in the FROM clause. The following query returns output with a right outer join from two tables: departments and employees. The join condition is that the manager ID in the departments table equals to the employee ID in the employees table:

SQL> set NULL 'NULL'
SQL> SELECT d.department_name, e.first_name, e.last_name 
  2  FROM departments d RIGHT OUTER JOIN employees e 
  3  ON d.manager_id = e.employee_id;
DEPARTMENT_NAME           FIRST_NAME           LAST_NAME
-------------------- -------------------- ---------------
Administration            Jennifer             Whalen
Marketing                 Michael              Hartstein
Purchasing                Den                  Raphaely
Human Resources           Susan                Mavris
Shipping                  Adam                 Fripp
IT                        Alexander            Hunold
......
NULL                      Clara                Vishney
NULL                      Jason                Mallin
NULL                      Hazel                Philtanker
NULL                      Nanette              Cambrault
NULL                      Alana                Walsh
NULL                      Karen                Partners
NULL                      Bruce                Ernst
......

Note that a right outer join may return extra rows from the second (right) table that do not satisfy the join condition. In those extra rows, columns from the first (left) table will be given null values.

The extra rows returned from the right outer join in this example represents employees that are not assigned as managers in the departments table.

How To Write a Query with a Full Outer Join?

If you want to query from two tables with a full outer join, you can use the FULL OUTER JOIN ... ON clause in the FROM clause. The following query returns output with a full outer join from two tables: departments and employees. The join condition is that the manager ID in the departments table equals to the employee ID in the employees table:

SQL> set NULL 'NULL'
SQL> SELECT d.department_name, e.first_name, e.last_name
  2  FROM departments d FULL OUTER JOIN employees e 
  3  ON d.manager_id = e.employee_id;
DEPARTMENT_NAME           FIRST_NAME           LAST_NAME
-------------------- -------------------- --------------
Administration            Jennifer             Whalen
Marketing                 Michael              Hartstein
Purchasing                Den                  Raphaely
Human Resources           Susan                Mavris
Shipping                  Adam                 Fripp
IT                        Alexander            Hunold
......
Treasury                  NULL                 NULL
Corporate Tax             NULL                 NULL
Control And Credit        NULL                 NULL
Shareholder Services      NULL                 NULL
Benefits                  NULL                 NULL
Manufacturing             NULL                 NULL
Construction              NULL                 NULL
......
NULL                      Clara                Vishney
NULL                      Jason                Mallin
NULL                      Hazel                Philtanker
NULL                      Nanette              Cambrault
NULL                      Alana                Walsh
NULL                      Karen                Partners
NULL                      Bruce                Ernst
......

Note that a right outer join may return two sets of extra rows: one set from the first (left) table that do not satisfy the join condition, and the other set from the second (right) table that do not satisfy the join condition.

How To Write an Inner Join with the WHERE Clause?

If you don't want to use the INNER JOIN ... ON clause to write an inner join, you can put the join condition in the WHERE clause as shown in the following query example:

SQL> SELECT d.department_name, e.first_name, e.last_name 
  2  FROM departments d, employees e 
  3  WHERE d.manager_id = e.employee_id;

DEPARTMENT_NAME           FIRST_NAME           LAST_NAME
-------------------- -------------------- --------------
Administration            Jennifer             Whalen
Marketing                 Michael              Hartstein
Purchasing                Den                  Raphaely
Human Resources           Susan                Mavris
Shipping                  Adam                 Fripp
IT                        Alexander            Hunold
......

(Continued on next part...)

Part:   1  2  3  4  5  6   7  8 


Selected Developer Jobs:

More...