Database Systems Journal
Practical 8
Aim: Join Queries
a. Inner Join
b. Outer Join
Consider relations
CUSTOMER
Customer_id Last_name First_name Favourite_website
4000 Gabhane Madhuri [Link]
5000 Kadukar Leena [Link]
6000 Kapartiware Anjali [Link]
7000 Shende Ashwini [Link]
8000 Gote Ashwini Null
9000 Jogi Vivek [Link]
ORDER
Order_id Customer_id Order_date
1 7000 2016/4/18
2 5000 2016/4/18
3 8000 2016/04/19
4 4000 2016/04/20
5 NULL 2016/05/01
1. Retrieve the customer_id, order_id, order_date from the customer and order table.
2. Retrieve the customer_id, order_id, order_date from the customer and order table
Where customer_id >5000.
a. INNER JOIN:
1. INNER EQUI-JOIN:
[Link] the customer_id ,order_id,order_date from the customer and order table.
SELECT Customer.Customer_id,Orders.Order_id,Orders.Order_date FROM
Customers INNER JOIN Orders ON Customer.Customer_id=Orders.Customer_id
ORDER BY Customer.Customer_id;
mysql> Select Customer.Customer_id,Orders.Order_id,Orders.Order_date from
Customer INNER JOIN Orders ON
-> Customer.Customer_id=Orders.Customer_id ORDER BY
Customer.Customer_id;
+-------------+----------+------------+
| Customer_id | Order_id | Order_date |
Khan S. Alam 36 [Link]
[Link]
Database Systems Journal
+-------------+----------+------------+
| 4000 | 4 | 2016-04-20 |
| 5000 | 2 | 2016-04-18 |
| 7000 | 1 | 2016-04-18 |
| 8000 | 3 | 2016-04-19 |
+-------------+----------+------------+
4 rows in set (0.00 sec)
2. INNER NON EQUI-JOIN:
[Link] the customer_id,order_id,order_date from the customer and order table.
Where customer_id >5000.
SELECT Customer.Customer_id,Orders.Order_id,Orders.Order_date FROM
Customer INNER JOIN Orders ON Customer.Customer_id>5000 ORDER BY
Customer.Customer_id;
mysql> SELECT Customer.Customer_id,Orders.Order_id,Orders.Order_date
FROM Customer INNER JOIN Orders ON Customer.Customer_id>5000 ORDER
BY Customer.Customer_id;
+-------------+----------+------------+
| Customer_id | Order_id | Order_date |
+-------------+----------+------------+
| 6000 | 1 | 2016-04-18 |
| 6000 | 2 | 2016-04-18 |
| 6000 | 3 | 2016-04-19 |
| 6000 | 4 | 2016-04-20 |
| 6000 | 5 | 2016-05-01 |
| 7000 | 1 | 2016-04-18 |
| 7000 | 2 | 2016-04-18 |
| 7000 | 3 | 2016-04-19 |
| 7000 | 4 | 2016-04-20 |
| 7000 | 5 | 2016-05-01 |
| 8000 | 3 | 2016-04-19 |
| 8000 | 4 | 2016-04-20 |
| 8000 | 5 | 2016-05-01 |
| 8000 | 1 | 2016-04-18 |
| 8000 | 2 | 2016-04-18 |
| 9000 | 1 | 2016-04-18 |
| 9000 | 2 | 2016-04-18 |
| 9000 | 3 | 2016-04-19 |
| 9000 | 4 | 2016-04-20 |
| 9000 | 5 | 2016-05-01 |
+-------------+----------+------------+
20 rows in set (0.00 sec)
Khan S. Alam 37 [Link]
[Link]
Database Systems Journal
b. OUTER JOIN:
[Link] the customer_id ,order_id,order_date from the customer and order table.
1. LEFT OUTER JOIN:
SELECT Customer.Customer_id,Orders.Order_id,Orders.Order_date FROM
Customer LEFT OUTER JOIN Orders ON
Customer.Customer_id=Orders.Customer_id ORDER BY Customer.Customer_id;
mysql> SELECT Customer.Customer_id,Orders.Order_id,Orders.Order_date FROM
Customer LEFT OUTER JOIN Orders ON
Customer.Customer_id=Orders.Customer_id ORDER BY Customer.Customer_id;
+-------------+----------+------------+
| Customer_id | Order_id | Order_date |
+-------------+----------+------------+
| 4000 | 4 | 2016-04-20 |
| 5000 | 2 | 2016-04-18 |
| 6000 | NULL | NULL |
| 7000 | 1 | 2016-04-18 |
| 8000 | 3 | 2016-04-19 |
| 9000 | NULL | NULL |
+-------------+----------+------------+
6 rows in set (0.00 sec)
2. RIGHT OUTER JOIN:
SELECT Customer.Customer_id,Orders.Order_id,Orders.Order_date FROM
Customer RIGHT OUTER JOIN Orders ON
Customer.Customer_id=Orders.Customer_id ORDER BY Customer.Customer_id;
mysql> SELECT Customer.Customer_id,Orders.Order_id,Orders.Order_date FROM
Customer RIGHT OUTER JOIN Orders ON
Customer.Customer_id=Orders.Customer_id ORDER BY Customer.Customer_id;
+-------------+----------+------------+
| Customer_id | Order_id | Order_date |
+-------------+----------+------------+
| NULL | 5 | 2016-05-01 |
| 4000 | 4 | 2016-04-20 |
| 5000 | 2 | 2016-04-18 |
| 7000 | 1 | 2016-04-18 |
| 8000 | 3 | 2016-04-19 |
+-------------+----------+------------+
5 rows in set (0.00 sec)
3. FULL OUTER JOIN:
Khan S. Alam 38 [Link]
[Link]
Database Systems Journal
SELECT Customer.Customer_id,Orders.Order_id,Orders.Order_date FROM
Customer FULL OUTER JOIN Orders ON
Customer.Customer_id=Orders.Customer_id ORDER BY Customer.Customer_id;
mysql> SELECT Customer.Customer_id,Orders.Order_id,Orders.Order_date FROM
Customer FULL OUTER JOIN Orders ON
Customer.Customer_id=Orders.Customer_id ORDER BY Customer.Customer_id;
+-------------+------+----------------------+
| Customer_id | Order_id | Order_date |
+-------------+------+----------------------+
| NULL | 5 | 2016/05/01 |
| 4000 | 4 | 2016/04/20 |
| 5000 | 2 | 2016/04/18 |
| 6000 | NULL | NULL |
| 7000 | 1 | 2016/04/18 |
| 8000 | 3 | 2016/04/19 |
| 9000 | NULL | NULL |
+-------------+------+------------------------+
Khan S. Alam 39 [Link]
[Link]