***Welcome to ashrafedu.blogspot.com * * * This website is maintained by ASHRAF***

Posts

Tuesday, 17 December 2019

Joins


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