Skip to main content

Joins in Oracle with Examples

Why Joins are required

The information needed to satisfy a user query requires more than one table.
For example, the EMPLOYEES table has a column with a department number but not a department name; the department name must be retrieved from the DEPARTMENTS table. You can get this information by joining the two tables on a common column, in this case, the DEPARTMENT_ID column. Two or more tables can also be joined in situations where the columns may not be equal.


Type of Joins

1) Equijoin or Inner Join or Natural Join

2) Outer Joins
                a) Left Outer Join
                b) Right Outer Join
                c) Full Outer Join
3) Self-Joins


Equijoin or Inner Join

A join between two tables where rows are returned if one or more columns in common between the two tables are equal and not NULL.

Outer Join

A join between two or more tables returning all the rows in one table whether or not the second table contains a match on the join condition

Self-Join

A join of a table to itself where a non-primary key column in the table is related to the primary key column of another row in the same table

Hierarchical 

A table design where one of the foreign keys in the table references the primary key of the same table in a parent-child relationship.

Cartesian Product 

A join between two tables where no join condition is specified, and as a result, every row in the first table is joined with every row in the second table.

Equijoin or Inner Join Syntax  

Company needs to see the department name in the report. That information is in the DEPARTMENTS table.
Now we will join the two tables on the common column,DEPARTMENT_ID, and produce a report that is much more readable:

Syntax

select    employee_id "Emp ID",
                last_name || ', ' || first_name "Name",
                department_name "Dept"
from      employees employees , departments departments
where    employees.department_id = departments .department_id;

Outer Join Syntax  oracle

select    e.employee_id 'Emp ID',
                e.last_name || ', ' || e.first_name 'Name',
                d.department_name 'Dept'
from      employees e left outer join departments d
                on e.department_id = d.department_id
where   e.job_id = 'SA_REP'; 


Full Outer Join Syntax  oracle

select    e.employee_id "Emp ID",
                e.last_name || ', ' || e.first_name "Name",
                d.department_name "Dept"
from      employees e full outer join departments d
                on e.department_id = d.department_id;

 


Self-Join Syntax  oracle
select    e.employee_id "Emp ID",
                e.last_name "Emp Name",
                m.employee_id "Mgr ID",
                m.last_name "Mgr Name"
from      employees e join employees m
                on e.manager_id = m.employee_id;
 

Comments

Popular posts from this blog

Contact Me

Do You have any queries ?                   If you are having any query or wishing to get any type of help related Datawarehouse, OBIEE, OBIA, OAC then please e-email on below. I will reply to your email within 24 hrs. If I didn’t reply to you within 24 Hrs., Please be patience, I must be busy in some work. kashif7222@gmail.com

Top 130 SQL Interview Questions And Answers

1. Display the dept information from department table.   Select   *   from   dept; 2. Display the details of all employees   Select * from emp; 3. Display the name and job for all employees    Select ename ,job from emp; 4. Display name and salary for all employees.   Select ename   , sal   from emp;   5. Display employee number and total salary   for each employee. Select empno, sal+comm from emp; 6. Display employee name and annual salary for all employees.   Select empno,empname,12*sal+nvl(comm,0) annualsal from emp; 7. Display the names of all employees who are working in department number 10   Select ename from emp where deptno=10; 8. Display the names of all employees working as   clerks and drawing a salary more than 3000   Select ename from emp where job=’clerk’and sal>3000; 9. Display employee number and names for employees who earn commissi...

Informatica sample project

Informatica sample project - 1 CareFirst – Blue Cross Blue Shield, Maryland (April 2009 – Current) Senior ETL Developer/Lead Model Office DWH Implementation (April 2009 – Current) CareFirst Blue Cross Blue Shield is one of the leading health care insurance provided in Atlantic region of United States covering Maryland, Delaware and Washington DC. Model Office project was built to create data warehouse for multiple subject areas including Members, Claims, and Revenue etc. The project was to provide data into EDM and to third party vendor (Verisk) to develop cubes based on data provided into EDM. I was responsible for analyzing source systems data, designing and developing ETL mappings. I was also responsible for coordinating testing with analysts and users. Responsibilities: ·          Interacted with Data Modelers and Business Analysts to understand the requirements and the impact of the ETL on the business. ·  ...