รวม SQL JOINs แบบต่างๆ

23-ม.ค.-19

คัมภีร์เทพ IT

ความรู้ด้าน Database ถึงเป็นพื้นฐานสำคัญของคนที่เป็น Programmer หรือ Developer แน่นอนว่าคุณต้องมีพื้นฐานของ SQL ซึ่ง การ Join Table ก็เป็นอีกเรื่องที่คุณได้มีโอกาสใช้ในการทำงาน โดยบทความนี้ได้ รวม SQL JOINs แบบต่างๆ ที่มักใช้งานกันบ่อย และแนะนำเว็บไซต์สำหรับคนอยากฝึกฝนและทดสอบความเข้าใจด้วย

T-SQL รองรับทั้งรูปแบบการ Cross, Inner และ Outer JOIN clauses รวมทั้ง UNION operators เพื่อใช้ในการรวม Data set เข้าด้วยกัน คุณอาจเคยรู้จักหรือได้ทราบรายละเอียดเกี่ยวกับการ Join โดยใช้ Venn diagram มาบ้างแล้ว เพื่อให้เห็นภาพมากขึ้น ลองมาดูตัวอย่างเหล่านี้กัน

INNER JOIN

เราจะใช้ “INNER” join หรือ “JOIN” เมื่อคุณต้องการจับคู่สิ่งที่เหมือนกันระหว่าง 2 Table คุณต้องมี Key ระหว่าง Table ที่ต้องการจะ Join กันด้วยเงื่อนไข “ON” และผลลัพธ์ที่เกิดขึ้นคือสิ่งที่ Match หรือ ตรงกัน ไม่มีการสนใจผลลัพธ์ที่ไม่มีมีการ Match กันของข้อมูล ลองดูที่ตัวอย่างด้านล่าง

LEFT OUTER JOIN

เราจะใช้ LEFT OUTER Join เมื่อคุณต้องการจับคู่สิ่งที่เหมือนกันระหว่าง 2 Table โดยยึด Table ซ้ายเป็นหลัก แต่ส่วนที่ไม่ Match กับ Table ขวา(Right Table) จะใส่ค่า NULL ที่ Table ขวาแทน และเช่นเดียวกับ INNER Join คือ คุณต้องมี Key ระหว่าง Table ที่ต้องการจะ Join กันด้วยเงื่อนไข “ON” ลองดูที่ตัวอย่างด้านล่าง

* สำหรับ RIGHT OUTER JOIN ก็ใช้ Concept เดียวกับ LEFT OUTER JOIN เพียงแต่จะทำในทางตรงกันข้าม

CROSS JOIN

สำหรับ CROSS JOIN จะเป็นรวมทุกสิ่งจากทั้ง 2 Table โดยไม่จำเป็นต้องอาศัย Key ในการ Match กันระหว่าง 2 Table ซึ่งผลลัพธ์คือ จะได้ Data set ขนาดใหญ่ออกมา (จากตัวอย่างด้านล่าง ในส่วนของ Result จะแสดงแค่ตัวอย่างส่วนหนึ่งของ Data set ที่ได้ออกมาเท่านั้น)

* หากจะใช้การ Join แบบนี้ อาจต้องระวังในเรื่องผลลัพธ์ของ Data set ที่จะมีขนาดใหญ่ด้วย

UNION

ในขณะที่การ JOIN จะเป็นการรวมแถวของ Column ในแนวนอน แต่ UNION จะเป็นการรวมผลลัพธ์ในแนวตั้ง การใช้ UNION จะรวมผลลัพธ์ของ 2 Queries ไว้ใน Column เดียวและลบข้อมูลที่ซ้ำกัน(Duplicates) ออกไป หาก Queries ของคุณมีหลาย Column ข้อมูลเหล่านั้นจำเป็นต้องอยู่ในระดับ(Order) เดียวกัน เพื่อให้ UNION นั้นเกิดความสมบูรณ์

UNION ALL

UNION ALL เป็นการรวมผลลัพธ์ของ 2 Queries เหมือนกับ UNION แต่จะเก็บข้อมูลซ้ำ (Duplicates) ไว้ในผลลัพธ์ด้วย

วิธีที่ดีที่สุดในการทำความเข้าใจเรื่องการ JOIN คือ คุณต้องลองใช้มัน หากคุณอยากทดลองความเข้าใจ สามารถเข้าไปได้ที่  SQLZoo หรือ Hacker Rank เพื่อลองทำแบบทดสอบดู แล้วจะทำให้คุณเข้าใจได้มากยิ่งขึ้น

จากตัวอย่างข้างต้น เป็นรูปแบบการใช้งานที่มักเห็นกันบ่อยๆ เท่านั้น อันที่จริงยังมีรูปแบบอื่นๆ อีก แต่ที่สำคัญที่สุดคือ ในฐานะของคนเขียน Code คุณต้องประเมินว่าจะใช้แบบไหนถึงจะเหมาะสม เช่น ผลลัพธ์ที่ต้องการ, ความเร็วในการ Query ข้อมูล, ปริมาณของข้อมูล เป็นต้น

ที่มา:  https://hackernoon.com/

 

 

รับตำแหน่งงานไอทีใหม่ๆ ด้วยบริการ IT Job Alert

 

อัพเดทบทความจากคนวงในสายไอทีทาง LINE ก่อนใคร
อย่าลืมแอดไลน์ @techstarth เป็นเพื่อนนะคะ

เพิ่มเพื่อน

 

บทความล่าสุด