Cross Join, Self Join และ Natural Join บน Microsoft SQL Server
การ JOIN ใน SQL มีหลากหลายรูปแบบโดยทั่วไปที่เห็นกันบ่อย คือ LEFT JOIN, RIGHT JOIN, OUTTER JOIN และ INNER JOIN แต่ยังมีการ JOIN ในรูปแบบอื่นอยู่อีกที่เราไม่ค่อยจะได้เห็นกันบ่อยนัก แต่เราสามารถนำมาประยุกต์เพื่อให้ได้ข้อมูลที่ต้องการ
Cross Join
Cross join เป็นการรวม row ระหว่าง 2 Tables โดยจะวนจนครบตามจำนวนของข้อมูลแบบ multiple set หรือเรียกว่า Cartesian product โดยจะนำข้อมูลบน Table หลักแต่ละแถวไปรวมกับข้อมูลของ Table รองทั้งหมด โดยไล่ไปจนถึง row สุดท้ายของ Table หลัก
ตัวอย่าง Result ของ Cross Join
Syntax ของ Cross join สามารถเขียนได้ 2 แบบดังนี้
Select <column list or *>
From Table_A
Cross Join Table_B
หรือ
Select <column list or *>
From Table_A, Table_B
จะเห็นว่าการใช้ Cross join นั้นจะไม่จำเป็นต้องมี Where clause
Self Join
Self join เป็นการ join ภายใน Table เดียวกันการ operate ข้อมูลภายใน Table ตัวเองผ่าน Where Clause โดย Syntax จะเหมือนกับการ join ระหว่าง 2 Table ซึ่งจะอธิบายตามตัวอย่างด้านล่าง
ข้อมูลตัวอย่าง
CUSTOMERS
Syntax ของการทำ Self Join
SELECT a.ID, b.NAME, a.SALARY
FROM CUSTOMERS a, CUSTOMERS b
WHERE a.SALARY < b.SALARY
ผลของการทำ Self Join
Natural Join
Natural join เป็นการ join ระหว่าง 2 Tables โดยที่แต่ละ Table ต้องมี column ที่เป็น key ที่มี relation กันอยู่หรือเป็นการ share ข้อมูลระหว่าง Table ซึ่งอาจจะเป็น column ที่มีชื่อเหมือนกันก็ได้ โดยการทำ Natural join จะต้องใช้ USING Clause เข้ามาแทนการใช้ Where Clause
Syntax ของ Natural Join
SELECT b.player, a.coach, a.teamname FROM eteam a
join (select player, teamid 'id' from goal b) b using (id)
*กรณีที่ชื่อ column ไม่เหมือนกันสามารถใช้ Aliases ได้
ผลของการทำ Natural Join
หมายเหตุ: Syntax ที่อธิบายทั้งหมดนี้ ใช้ใน Microsoft SQL Server เป็นหลักหากเป็น database อื่น สามารถนำไปประยุกต์ใช้งานได้โดยผู้ใช้งานอาจจะต้องศึกษารูปแบบของ database นั้นเพิ่มเติม