คุณสมบัติที่สำคัญอย่างหนึ่งของฐานข้อมูลเชิงสัมพันธ์คือความสามารถในการแยกข้อมูลที่เกี่ยวข้องออกเป็นส่วนประกอบต่างๆ ที่เรียกว่า 'ตาราง' แตกต่างจากฐานข้อมูลอื่น ๆ ฐานข้อมูลเชิงสัมพันธ์ต้องมีการรวบรวมข้อมูลจากตารางต่าง ๆ และรวบรวมผลลัพธ์เป็นข้อมูลที่มีความหมาย
นี่คือที่มาของฟังก์ชันการรวม ในฐานข้อมูลเชิงสัมพันธ์ การรวมเป็นหนึ่งในการดำเนินการทั่วไปที่อนุญาตให้คุณรวมข้อมูลจากสองตารางขึ้นไปเป็นชุดผลลัพธ์เดียว
อย่างไรก็ตาม คุณอาจพบว่าการรวมส่วนใหญ่ครอบคลุมเพียงสองตารางเท่านั้น อย่างไรก็ตาม การรวมสามารถขยายได้อย่างรวดเร็วถึงสามตารางขึ้นไป แม้ว่าการดู CTE อาจมีประสิทธิภาพมากกว่าเมื่อทำงานกับตารางมากกว่าสามตาราง แต่การรวมจะมีประสิทธิภาพและรวดเร็วมากเมื่อพูดถึงสามตาราง
ในบทช่วยสอนนี้ เราจะพูดถึงขั้นตอนต่างๆ ที่คุณต้องดำเนินการรวมที่เกี่ยวข้องกับสามตารางใน SQL
เริ่มต้นใช้งาน
ก่อนที่เราจะเริ่มต้น เราถือว่าคุณมีตารางอย่างง่ายสามตารางที่มีคอลัมน์ดังที่แสดงต่อไปนี้:
ตารางที่ 1:
รหัส | ชื่อ | อายุ
ตารางที่ 2:
รหัส | เมือง | ประเทศ
ตารางที่ 3:
รหัส | เงินเดือน | ตำแหน่ง
เลย์เอาต์นี้ช่วยให้เราเข้าใจได้อย่างรวดเร็วว่าการรวมตารางสามตารางทำงานอย่างไร และเราจะกำหนดค่าตารางเหล่านั้นโดยใช้คิวรี SQL ได้อย่างไร
รวมสามตารางใน SQL
เมื่อทำการรวมใน SQL คอมโพเนนต์หลักจะเริ่มต้นด้วยการระบุคอลัมน์ทั่วไปหรือชุดของคอลัมน์ในแต่ละตารางที่คุณต้องการรวม จากนั้นคุณสามารถใช้คอลัมน์ที่ใช้ร่วมกันเหล่านี้เพื่อเชื่อมโยงตารางเข้าด้วยกัน ทำให้ SQL สามารถตีความและผสานข้อมูลได้อย่างสมเหตุสมผลและมีประสิทธิภาพ
แม้ว่าจะมีการรวมหลายประเภทใน SQL แต่องค์ประกอบหลักคือความคล้ายคลึงกันในตาราง
สำหรับบทช่วยสอนนี้ เราจะมุ่งเน้นไปที่การรวมภายในที่ส่งคืนเฉพาะแถวที่ตรงกับค่าในสามตาราง
ในกรณีของตารางก่อนหน้านี้ เราสามารถทำการรวมภายในกับสามตารางตามที่แสดงในแบบสอบถามต่อไปนี้:
เลือก Table1.name, Table2.city, Table3.salaryจากตารางที่ 1
INNER JOIN ตารางที่ 2
บน Table1.id = Table2.id
INNER JOIN ตารางที่ 3
บน Table2.id = Table3.id;
ให้เราสำรวจแบบสอบถามก่อนหน้านี้ทีละขั้นตอน:
- อย่างแรกคือคำสั่ง SELECT ซึ่งช่วยให้เราสามารถเลือกคอลัมน์ที่เราต้องการรวมไว้ในชุดผลลัพธ์ ในกรณีนี้ เราสนใจคอลัมน์ชื่อจากตารางที่ 1 คอลัมน์เมืองจากตารางที่ 2 และคอลัมน์เงินเดือนจากตารางที่ 3
- เมื่อใช้คำสั่ง FROM เราระบุตารางเป้าหมายที่เราต้องการดึงคอลัมน์ที่ตั้งไว้ ในกรณีนี้ เรากำลังดึงข้อมูลจากตารางที่ 1
- ถัดมาคำสั่ง INNER JOIN เราใช้ส่วนคำสั่งนี้เพื่อรวมตารางที่ 1 กับตารางที่ 2 นอกจากนี้ เรายังใช้ส่วนคำสั่ง ON เพื่อระบุเงื่อนไขที่เชื่อมโยงตารางสองตารางซึ่งในกรณีนี้คือคอลัมน์ ID
- INNER JOIN ที่สองช่วยให้เราสามารถเข้าร่วมชุดผลลัพธ์จากการรวมครั้งแรกกับตารางที่ 3 โดยใช้ส่วนคำสั่ง ON เราบอก SQL ว่าเราต้องการเข้าร่วมชุดผลลัพธ์และตารางที่ 3 ตามคอลัมน์ ID
- ชุดผลลัพธ์จากทั้งสามตารางรวมอยู่ในคอลัมน์ที่เลือก
ตัวอย่างการปฏิบัติ:
แม้ว่าตัวอย่างก่อนหน้านี้จะสาธิตวิธีการเข้าร่วมตารางทั้งสามตาราง แต่ให้เรายกตัวอย่างที่ใช้งานได้จริงมากขึ้นและใช้ฐานข้อมูล Sakila
เราเข้าร่วมตารางภาพยนตร์ การเช่า และสินค้าคงคลังในกรณีนี้ แบบสอบถามเป็นดังนี้:
เลือก Rental.rental_id, Rental.rental_date, Film.title, Inventory.inventory_idจากการเช่า
เข้าร่วมสินค้าคงคลังบน rental.inventory_id = สินค้าคงคลัง.inventory_id
เข้าร่วมภาพยนตร์ใน inventory.film_id = film.film_id
ที่ไหน film.title = 'นักแข่งพระอาทิตย์ตก' ;
คำอธิบาย:
-
- ในกรณีนี้ เราใช้คำสั่ง SELECT เพื่อเลือกคอลัมน์ Rental_id, Rental_date และ Inventory_id จากตารางการเช่า
- ส่วนคำสั่ง JOIN แรกเชื่อมโยงตารางการเช่ากับตารางสินค้าคงคลังโดยใช้คอลัมน์ Inventory_id
- ส่วนคำสั่ง JOIN ที่สองรวมชุดผลลัพธ์จากการรวมครั้งแรกเข้ากับตารางภาพยนตร์โดยใช้คอลัมน์ film_id
- สุดท้าย เราใช้ส่วนคำสั่ง WHERE เพื่อกรองชุดผลลัพธ์เพื่อรวมชื่อเป้าหมายเท่านั้น
ตารางผลลัพธ์มีดังนี้:
บทสรุป
การรวมสามตารางใน SQL จำเป็นต้องระบุคอลัมน์หรือชุดของคอลัมน์ที่ใช้ร่วมกันในแต่ละตาราง และใช้ประเภทการรวมที่เหมาะสม (ภายใน ด้านซ้าย ด้านขวา หรือด้านนอกแบบเต็ม) เพื่อเชื่อมโยงตารางเข้าด้วยกัน ดังที่แสดงในบทช่วยสอนนี้ คุณควรเข้าใจวิธีการรวมสามตารางใน SQL