top of page

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 นั้นเพิ่มเติม

Recent Posts
Archive
Search By Tags
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page