0% found this document useful (0 votes)
64 views13 pages

A Brief Guide To SQL Server JOINs

SQL Server JOINs are used to combine rows from two or more tables based on relationships between column values. The main types of JOINs are INNER JOIN, SELF JOIN, CROSS JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, and FULL OUTER JOIN. JOIN algorithms like nested loop, merge, and hash are used to efficiently perform the JOIN operations.

Uploaded by

Paulo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
64 views13 pages

A Brief Guide To SQL Server JOINs

SQL Server JOINs are used to combine rows from two or more tables based on relationships between column values. The main types of JOINs are INNER JOIN, SELF JOIN, CROSS JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, and FULL OUTER JOIN. JOIN algorithms like nested loop, merge, and hash are used to efficiently perform the JOIN operations.

Uploaded by

Paulo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

A Brief Guide 


to SQL Server JOINs


with Examples & Best Practices
The fundamentals

SQL Server JOINs are used to retrieve data f rom two or more tables based on logical

relationships between them. The result dataset is represented as a separate table.

Deep knowledge of JOINs is a must for an advanced user. The easiest way to work with them

is to use dbForge SQL Complete, an add-in for SSMS and Visual Studio that accelerates

routine SQL coding with smart completion, formatting, and refactoring.

With its help, you can handle even the most complex JOINs easily. You don't need to

memorize multiple column names or aliases. SQL Complete instantly suggests a full JOIN

clause depending on foreign keys or conditions based on column names. These suggestions

are available after the JOIN and ON keywords.


4

Products Overview
Types of SQL JOINs

Each basic type of JOIN defines the way

tables are related in a query.

INNER JOIN SELF JOIN CROSS JOIN


Now let's have a more detailed overview of each type.

creates a result table by joins the table to itself creates a result table

combining rows that have and allows comparing containing a paired

matching values in two or rows within the same combination of each row

more tables. table. of the first table with

each row of the second

table.

LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN

delivers a result table that delivers a result table that returns a result that

includes unmatched rows comprises all records includes rows f rom both

f rom the table that is f rom the right table and left and right tables.

specified before the LEFT only matching rows f rom

OUTER JOIN clause. the left table.


5

INNER JOIN INNER JOIN returns only those records or rows that have
matching values and is used to retrieve data that appears in both
tables.

SYNTAX EXAMPLE

SELECT columns
SELECT с.CustomerID,

FROM table1
c.CustomerName,

INNER JOIN table2


so.ServiceID,

ON table1.column = table2.column; so.ServiceName

FROM Customers c

INNER JOIN ServiceOrders so

ON c.CustomerID = so.CustomerID
6

SELF JOIN allows you to join a table to itself. This implies that each
SELF JOIN
row of the table is combined with itself and with every other row

of the table. It is most useful for extracting hierarchical data or

comparing rows within the same table.

SYNTAX EXAMPLE

SELECT columns
SELECT *

FROM table1 a, table1 b


FROM ServiceOrders soleft

WHERE a.common_field = b.common_field; INNER JOIN ServiceOrders soright

ON soleft.CustomerID < soright.CustomerID


7

CROSS JOIN CROSS JOIN joins every row from the first table with every row
from the second table and returns all combinations of rows.
Imagine that you need to find all combinations of size and color.
In that case, a CROSS JOIN will come in handy. It does not need
any joining condition.

SYNTAX EXAMPLE

SELECT columns
SELECT c.CustomerName,

FROM table1
so.ServiceName

CROSS JOIN table2


FROM ServiceOrders so

CROSS JOIN Customers c


8

LEFT 
 LEFT OUTER JOIN delivers the output of the matching rows
OUTER JOIN between two tables. In case no records from the left table match
with the records from the right table, it shows those records with
null values.

SYNTAX EXAMPLE

SELECT columns
SELECT c.CustomerID,

FROM table1
c.CustomerName,

LEFT [OUTER] JOIN table2


so.ServiceID,

ON = table2.column;

o.ServiceName

FROM Customers c

LEFT OUTER JOIN ServiceOrders so

ON c.CustomerID = so.CustomerID
9

RIGHT Similarly to the previous case, RIGHT OUTER JOIN delivers a result
OUTER JOIN table that comprises all records from the right table and only
matching rows from the left table. The non-matching rows will
have null values.

SYNTAX EXAMPLE

SELECT columns
SELECT c.CustomerID,

FROM table1
c.CustomerName,

RIGHT [OUTER] JOIN table2


so.ServiceID,

ON table1.column = table2.column;

o.ServiceName

FROM Customers c

RIGHT OUTER JOIN ServiceOrders so

ON c.CustomerID = so.CustomerID
10

FULL
 If you use a FULL OUTER JOIN, it will retrieve both the matching
OUTER JOIN and non-matching rows from both left and right tables. 

The non-matching rows will have null values.

SYNTAX EXAMPLE

SELECT columns
SELECT c.CustomerID,

FROM table1
c.CustomerName,

FULL [OUTER] JOIN table2


od.OrderID,

ON table1.column = table2.column;
od.OrderDate

FROM Customers c

FULL OUTER JOIN Orders od

ON c.CustomerID = so.CustomerID
11

JOIN algorithms While logical JOIN operators (e.g., INNER


JOIN) define what needs to be done in a
query, different physical operators (a.k.a.
algorithms) define how it needs to be done.
There are three JOIN algorithms in SQL
Server.

Nested Loop Merge Hash


The nested loop algorithm is the simplest one, and it The merge algorithm has both inputs sorted on the The hash algorithm has two inputs: the build input
is typically used to join smaller tables. It compares merge columns. A merge join can be either a regular and the probe input. These roles are assigned by the
each row of one table with each row of the other or a many-to-many operation, with the latter using a query optimizer, with the build input being the
table looking for rows that meet the JOIN predicate. temporary table to store rows. This is generally a very smaller one. This algorithm is used for various
The nested loop is not the best algorithm for large fast algorithm, but it can be expensive if sorting set-matching operations. Please note that if both
queries. operations are involved. inputs are large, the operation will be expensive.
12

Best practices

Now as you know the difference between JOIN types,

learn the following tips to make your work with JOINs most effective.

Use explicit JOINs (i.e. JOIN and ON keywords)

Choose the appropriate JOIN type carefully

Apply table aliases when joining multiple tables or tables with long names

Use the [table alias].[column] name format for columns in queries

Apply column aliases (the names assigned to the columns in the result dataset)

If necessary, combine several JOINs for maximum flexibility


13

Apart from easy handling of JOINs,


what else do you get with dbForge SQL Complete?

Download • Double your coding speed with code completion


• Get instant context-based suggestions of database objects
dbForge SQL Complete
• Beautify your SQL code and unify coding standards with the SQL Formatter

for a FREE 14-day trial! • Eliminate repetitive coding with predefined and custom snippets
• Take advantage of safe and fast refactoring
• Boost code quality with a smart T-SQL Debugger
download
• Make your work even more efficient with a set of productivity tools
14

Helpful resources
As a bonus, here are some helpful video tutorials and articles

that will help you master SQL JOINs faster.

?
How to use JOINs Everything you Different types
 A comprehensive A comprehensive
in the SELECT should know about of JOINs in SQL guide to 
 guide to 

statements SQL Server JOINs Server INNER JOIN CROSS JOIN

You might also like