Click here to Skip to main content
15,885,985 members
Articles / Programming Languages / SQL
Tip/Trick

Types of Join in SQL Server

Rate me:
Please Sign up or sign in to vote.
4.70/5 (35 votes)
20 Jan 2014CPOL3 min read 350.2K   42   8
Types of join in SQL Server for fetching records from multiple tables.

Introduction

In this tip, I am going to explain about types of join.

What is join??

An SQL JOIN clause is used to combine rows from two or more tables, based on a common field between them.

There are many types of join.

  • Inner Join
    1. Equi-join
    2. Natural Join
  • Outer Join
    1. Left outer Join
    2. Right outer join
    3. Full outer join
  • Cross Join
  • Self Join

Using the Code

Join is very useful to fetching records from multiple tables with reference to common column between them.

To understand join with example, we have to create two tables in SQL Server database.

  1. Employee
    SQL
    create table Employee(
     
    id int identity(1,1) primary key,
    Username varchar(50),
    FirstName varchar(50),
    LastName varchar(50),
    DepartID int
     
    ) 
  2. Departments
  3. SQL
    create table Departments(
     
    id int identity(1,1) primary key,
    DepartmentName varchar(50)
     
    ) 

Now fill Employee table with demo records like that.

Image 1

Fill Department table also like this....

Image 2

1) Inner Join

The join that displays only the rows that have a match in both the joined tables is known as inner join.

SQL
select e1.Username,e1.FirstName,e1.LastName,e2.DepartmentName _<br />from Employee e1 inner join Departments e2 on e1.DepartID=e2.id

It gives matched rows from both tables with reference to DepartID of first table and id of second table like this.

Image 3

Equi-Join

Equi join is a special type of join in which we use only equality operator. Hence, when you make a query for join using equality operator, then that join query comes under Equi join.
Equi join has only (=) operator in join condition.
Equi join can be inner join, left outer join, right outer join.

Check the query for equi-join:

SQL
SELECT * FROM Employee e1 JOIN Departments e2 ON e1.DepartID = e2.id

Image 4

2) Outer Join

Outer join returns all the rows of both tables whether it has matched or not.

We have three types of outer join:

  1. Left outer join
  2. Right outer join
  3. Full outer join
a) Left Outer join

Left join displays all the rows from first table and matched rows from second table like that..

SQL
 SELECT * FROM Employee e1 LEFT OUTER JOIN Departments e2
ON e1.DepartID = e2.id 

Result:

Image 5

b) Right outer join

Right outer join displays all the rows of second table and matched rows from first table like that.

SQL
 SELECT * FROM Employee e1 RIGHT OUTER JOIN Departments e2
ON e1.DepartID = e2.id

Result:

Image 6

3) Full outer join

Full outer join returns all the rows from both tables whether it has been matched or not.

 SELECT * FROM Employee e1 FULL OUTER JOIN Departments e2
ON e1.DepartID = e2.id 
Result:

Image 7

3) Cross Join

A cross join that produces Cartesian product of the tables that are involved in the join. The size of a Cartesian product is the number of the rows in the first table multiplied by the number of rows in the second table like this.

SQL
SELECT * FROM Employee cross join Departments e2

You can write a query like this also:

SQL
SELECT * FROM Employee , Departments e2

 4) Self Join

Joining the table itself called self join. Self join is used to retrieve the records having some relation or similarity with other records in the same table. Here, we need to use aliases for the same table to set a self join between single table and retrieve records satisfying the condition in where clause.

SQL
SELECT e1.Username,e1.FirstName,e1.LastName from Employee e1 _<br />inner join Employee e2 on e1.id=e2.DepartID

Here, I have retrieved data in which id and DepartID of employee table has been matched:

Image 8

Points of Interest

Here, I have taken one example of self join in this scenario where manager name can be retrieved by managerid with reference of employee id from one table.

Here, I have created one table employees like that:

Image 9

If I have to retrieve manager name from manager id, then it can be possible by Self join:

SQL
select e1.empName as ManagerName,e2.empName as EmpName _<br />from employees e1 inner join employees e2 on e1.id=e2.managerid

Result:

Image 10

History

  • 20 Jan 2014: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Team Leader eInfochips
India India



Nirav Prabtani




I am a team lead, Database Architect and Designer /Technical Architect/Analyst,
Programmer in Microsoft .NET Technologies & Microsoft SQL Server with more than
4.5 years of hands on experience.



I love to code....!!! Smile | :)



My recent past includes my work with the education domain as a technical business
requirement analyst, database architect & designer and analyst programmer; just
love my involvement with the world of knowledge, learning and education and I think
I know quite well what I want to do in life & in my career. What do I like? Well,
ideation, brainstorming, coming up with newer and more creative ways of doing things;
each time with an enhanced efficiency. An item in my day's agenda always has a task
to look at what I did yesterday & focus on how I can do it better today




Contact Me

Nirav Prabtani


Mobile : +91 738 308 2188



Email : niravjprabtani@gmail.com


My Blog:
Nirav Prabtani



Comments and Discussions

 
BugJoin in sql server Pin
arunporwal16-Oct-15 20:43
arunporwal16-Oct-15 20:43 
QuestionAdition things About Natual join. Pin
ashu_om10-Nov-14 18:02
ashu_om10-Nov-14 18:02 
GeneralMy vote of 5 Pin
Sibeesh KV19-Sep-14 19:43
professionalSibeesh KV19-Sep-14 19:43 
GeneralMy vote of 5 Pin
Animesh Datta21-May-14 22:13
Animesh Datta21-May-14 22:13 
GeneralRe: My vote of 5 Pin
Nirav Prabtani26-May-14 20:49
professionalNirav Prabtani26-May-14 20:49 
QuestionJoin in sql server Pin
Member 995422424-Apr-14 5:53
Member 995422424-Apr-14 5:53 
QuestionSome points Pin
Christian Graus20-Jan-14 14:17
protectorChristian Graus20-Jan-14 14:17 
AnswerRe: Some points Pin
Nirav Prabtani21-Jan-14 2:34
professionalNirav Prabtani21-Jan-14 2:34 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.