การเชื่อมข้อมูลเฉพาะตัวที่ไม่ตรงกัน SQL OUTER JOIN

การเชื่อมข้อมูลเฉพาะตัวที่ไม่ตรงกัน


SELECT column_name(s)
FROM table1
OUTER JOIN table2
ON table1.column_name=table2.column_name;


column_name(s) :: 
ชื่อคอลัมน์ที่เราต้องการจะแสดง
table1 :: ชื่อตารางข้อมูล ตารางที่ 1
table2 :: ชื่อตารางข้อมูล ตารางที่ 2
column_name :: ชื่อคอลัมน์ที่มีข้อมูลที่ตรงกัน


ตารางข้างล่างชื่อ Orders
OrderID
CustomerID
OrderDate
10308
2
1996-09-18
10309
37
1996-09-19
10310
77
1996-09-20

ตารางข้างล่างชื่อ Customers 
CustomerID
CustomerName
ContactName
Country
1
Alfreds Futterkiste
Maria Anders
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mexico


ตัวอย่าง
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
OUTER 
JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;


OrderID
CustomerName
OrderDate
10309
Alfreds Futterkiste
1996-09-19
10310
Antonio Moreno Taquería
1996-09-20

จะเห็นได้ว่าการ 
JOIN โดยใช้คอลัมน์ของCustomerID ซึ่งตาราง Orders และ ตาราง Customers  มีข้อมูลของตารางที่ไม่เหมือนกัน  

จะเห็นได้ว่าการ OUTER JOIN จะ JOIN เฉพาะตารางที่ไม่ตรงกับค่าที่เท่ากันของสองตารางที่เชื่อมโยงกัน




การเชื่อมต่อข้อมูลกับตารางที่อยู่ทางขวา SQL RIGHT JOIN

การเชื่อมต่อข้อมูลกับตารางที่อยู่ทางขวา

SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;

หรือ 

SELECT column_name(s)
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;

column_name(s) :: ชื่อคอลัมน์ที่เราต้องการจะแสดง
table1 :: ชื่อตารางข้อมูล ตารางที่ 1
table2 :: ชื่อตารางข้อมูล ตารางที่ 2
column_name :: ชื่อคอลัมน์ที่มีข้อมูลที่ตรงกัน

ตารางข้างล่างชื่อ Customers 

ID
Name
1
John
2
Susan
3
Tony

 ตารางข้างล่างชื่อ Salary_to
ID
Salary
1
23000
2
12000
4
32100

ตัวอย่าง
SELECT Customers.ID, Customers.Name, Salary_to.Salary
FROM Customers
LEFT JOIN Salary_to
ON Customers.ID=Salary_to.ID;

ผลลัพธ์


ID
Name
Salary
1
John
23000
2
Susan
12000
3
32100
เป็นการทำการ JOIN ข้อมูลกับตารางที่อยู่ทางขวาโดยจะยึดจากข้อมูลที่มีอยู่ทางขวาเป็นตัวหลัก

การเชื่อมต่อข้อมูลกับตารางที่อยู่ทางซ้าย SQL LEFT JOIN

การเชื่อมต่อข้อมูลกับตารางที่อยู่ทางซ้าย

SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;


หรือ 

SELECT column_name(s)
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;


column_name(s) :: ชื่อคอลัมน์ที่เราต้องการจะแสดง
table1 :: ชื่อตารางข้อมูล ตารางที่ 1
table2 :: ชื่อตารางข้อมูล ตารางที่ 2
column_name :: ชื่อคอลัมน์ที่มีข้อมูลที่ตรงกัน

ตารางข้างล่างชื่อ Customers 
ID
Name
1
John
2
Susan
3
Tony

 ตารางข้างล่างชื่อ Salary_to
ID
Salary
1
23000
2
12000
4
32100

ตัวอย่าง
SELECT Customers.ID, Customers.Name, Salary_to.Salary
FROM Customers
LEFT JOIN Salary_to
ON Customers.ID=Salary_to.ID;


ผลลัพธ์


ID
Name
Salary
1
John
23000
2
Susan
12000
3
 Tony


เป็นการทำการ JOIN ข้อมูลกับตารางที่อยู่ทางซ้าย โดยจะยึดจากข้อมูลที่มีอยู่ทางซ้ายเป็นตัวหลัก

การเชื่อมข้อมูลเฉพาะตัวที่ตรงกัน SQL INNER JOIN

การเชื่อมข้อมูลเฉพาะตัวที่ตรงกัน


SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;


column_name(s) :: 
ชื่อคอลัมน์ที่เราต้องการจะแสดง
table1 :: ชื่อตารางข้อมูล ตารางที่ 1
table2 :: ชื่อตารางข้อมูล ตารางที่ 2
column_name :: ชื่อคอลัมน์ที่มีข้อมูลที่ตรงกัน


ตารางข้างล่างชื่อ Orders
OrderID
CustomerID
OrderDate
10308
2
1996-09-18
10309
37
1996-09-19
10310
77
1996-09-20

ตารางข้างล่างชื่อ Customers 
CustomerID
CustomerName
ContactName
Country
1
Alfreds Futterkiste
Maria Anders
Germany
2
Ana Trujillo Emparedados y helados
Ana Trujillo
Mexico
3
Antonio Moreno Taquería
Antonio Moreno
Mexico


ตัวอย่าง
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;


OrderID
CustomerName
OrderDate
10308
Ana Trujillo Emparedados y helados
9/18/1996

จะเห็นได้ว่าการ JOIN โดยใช้คอลัมน์ของCustomerID ซึ่งตาราง Orders และ ตาราง Customers  มีข้อมูลของตารางที่ตรงกัน คือ 

จะเห็นได้ว่าการ INNER JOIN กับ JOIN เฉยๆ ทำงานเหมือนกัน