Joins
The
SQL Joins clause is used to combine records from two or more
tables in a database. A JOIN is a means for combining fields from two tables by
using values common to each.
Consider the following two
tables
CUSTOMERS Table
ID
|
NAME
|
AGE
|
ADDRESS
|
SALARY
|
1
|
Ramesh
|
32
|
Ahmedabad
|
2000.00
|
2
|
Khilan
|
25
|
Delhi
|
1500.00
|
3
|
kaushik
|
23
|
Kota
|
2000.00
|
4
|
Chaitali
|
25
|
Mumbai
|
6500.00
|
5
|
Hardik
|
27
|
Bhopal
|
8500.00
|
6
|
Komal
|
22
|
MP
|
4500.00
|
7
|
Muffy
|
24
|
Indore
|
10000.00
|
ORDERS Table
OID
|
DATE
|
CUSTOMER_ID
|
AMOUNT
|
102
|
2009-10-08 00:00:00
|
3
|
3000
|
100
|
2009-10-08 00:00:00
|
3
|
1500
|
101
|
2009-11-20 00:00:00
|
2
|
1560
|
103
|
2008-05-20 00:00:00
|
4
|
2060
|
Join these two tables in our
SELECT statement as shown below.
SELECT ID,
NAME, AGE, AMOUNT
FROM CUSTOMERS, ORDERS
WHERE
CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Output:
ID
|
NAME
|
AGE
|
AMOUNT
|
3
|
kaushik
|
23
|
3000
|
3
|
kaushik
|
23
|
1500
|
2
|
Khilan
|
25
|
1560
|
4
|
Chaitali
|
25
|
2060
|
Basic SQL Join Types
There are four basic
types of SQL joins: inner, left, right, and full.
Inner
Join
The
most important and frequently used of the joins is the INNER JOIN. They
are also referred to as an EQUIJOIN. The INNER JOIN creates a new result
table by combining column values of two tables (table A and table B) based upon
the join-predicate. The query compares each row of table A with each row of
table B to find all pairs of rows which satisfy the join-predicate. When the
join-predicate is satisfied, column values for each matched pair of rows of A
and B are combined into a result row.
The
basic syntax of the INNER JOIN is as follows.
SELECT table1.column1,
table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field =
table2.common_field;
Example:
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
INNER JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Output:
ID
|
NAME
|
AMOUNT
|
DATE
|
3
|
kaushik
|
3000
|
2009-10-08 00:00:00
|
3
|
kaushik
|
1500
|
2009-10-08 00:00:00
|
2
|
Khilan
|
1560
|
2009-11-20 00:00:00
|
4
|
Chaitali
|
2060
|
2008-05-20 00:00:00
|
Left Join
The
SQL LEFT JOIN returns all rows from the left table, even if
there are no matches in the right table. This means that a left join
returns all the values from the left table, plus matched values from the right
table or NULL in case of no matching join predicate.
The basic syntax of a LEFT JOIN is
as follows.
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
Example:
SELECT ID, NAME, AMOUNT, DATE FROM CUSTOMERS
LEFT JOIN ORDERS ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Output:
ID
|
NAME
|
AMOUNT
|
DATE
|
1
|
Ramesh
|
NULL
|
NULL
|
2
|
Khilan
|
1560
|
2009-11-20 00:00:00
|
3
|
kaushik
|
3000
|
2009-10-08 00:00:00
|
3
|
kaushik
|
1500
|
2009-10-08 00:00:00
|
4
|
Chaitali
|
2060
|
2008-05-20 00:00:00
|
5
|
Hardik
|
NULL
|
NULL
|
6
|
Komal
|
NULL
|
NULL
|
7
|
Muffy
|
NULL
|
NULL
|
Right Join
The SQL RIGHT JOIN returns all
rows from the right table, even if there are no matches in the left table. This
means that a right join returns all the values from the right table, plus
matched values from the left table or NULL in case of no matching join
predicate.
The basic syntax of a RIGHT
JOIN is as follow.
SELECT table1.column1,
table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field =
table2.common_field;
Example:
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
RIGHT JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Output:
ID
|
NAME
|
AMOUNT
|
DATE
|
3
|
kaushik
|
3000
|
2009-10-08 00:00:00
|
3
|
kaushik
|
1500
|
2009-10-08 00:00:00
|
2
|
Khilan
|
1560
|
2009-11-20 00:00:00
|
4
|
Chaitali
|
2060
|
2008-05-20 00:00:00
|
Full Join
The
SQL FULL JOIN combines the results of both left and right
outer joins. The joined table will contain all records from both the tables and
fill in NULLs for missing matches on either side.
The basic syntax of a FULL JOIN is as follows
SELECT table1.column1,
table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field =
table2.common_field;
Example:
SELECT ID, NAME, AMOUNT, DATE
FROM CUSTOMERS
FULL JOIN ORDERS
ON CUSTOMERS.ID = ORDERS.CUSTOMER_ID;
Output:
ID
|
NAME
|
AMOUNT
|
DATE
|
1
|
Ramesh
|
NULL
|
NULL
|
2
|
Khilan
|
1560
|
2009-11-20 00:00:00
|
3
|
kaushik
|
3000
|
2009-10-08 00:00:00
|
3
|
kaushik
|
1500
|
2009-10-08 00:00:00
|
4
|
Chaitali
|
2060
|
2008-05-20 00:00:00
|
5
|
Hardik
|
NULL
|
NULL
|
6
|
Komal
|
NULL
|
NULL
|
7
|
Muffy
|
NULL
|
NULL
|
3
|
kaushik
|
3000
|
2009-10-08 00:00:00
|
3
|
kaushik
|
1500
|
2009-10-08 00:00:00
|
2
|
Khilan
|
1560
|
2009-11-20 00:00:00
|
4
|
Chaitali
|
2060
|
2008-05-20 00:00:00
|
No comments:
Post a Comment