เข้าร่วมสามตารางใน SQL

Khea Rwm Samta Rang Ni Sql



ในฐานข้อมูลเชิงสัมพันธ์ งานในการดึงข้อมูลจากหลายตารางถือเป็นเรื่องปกติมาก ขึ้นอยู่กับผลลัพธ์เป้าหมาย สิ่งนี้เกี่ยวข้องกับการรวมหลายตารางเป็นหน่วยเดียวและดึงข้อมูลผลลัพธ์

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

ในบทช่วยสอนนี้ เราจะแนะนำคุณเกี่ยวกับการรวมและเทคนิคต่างๆ ที่คุณสามารถใช้เพื่อรวมสามตารางใน SQL







ความต้องการ:

เพื่อวัตถุประสงค์ในการสาธิต เราจะใช้ MySQL เวอร์ชัน 80 และฐานข้อมูลตัวอย่าง Sakila หากต้องการปฏิบัติตาม คุณสามารถดาวน์โหลดและตั้งค่าฐานข้อมูล Sakila ในเซิร์ฟเวอร์ MySQL ของคุณได้ คุณสามารถใช้ชุดข้อมูลอื่นๆ ที่คุณเห็นว่าเกี่ยวข้องได้ตามสบาย



ประเภทของการรวมใน SQL

ก่อนที่เราจะพูดถึงแอปพลิเคชันการรวม ให้เราเริ่มต้นด้วยการพูดคุยถึงประเภทต่างๆ ของการรวมที่มีอยู่ในฐานข้อมูล SQL



เข้าร่วมภายใน

การรวมประเภทแรกคือ INNER JOIN การรวมชนิดนี้จะส่งกลับเฉพาะแถวที่มีค่าที่ตรงกันในทั้งสองตารางเท่านั้น เป็นประเภทการรวมทั่วไปและเรียบง่ายที่สุดเมื่อรวมสองตาราง





ไวยากรณ์มีดังนี้:

เลือกคอลัมน์

จากตารางที่ 1

เข้าร่วมภายในตารางที่ 2 บน table1.column_name = table2.column_name;

เข้าร่วมทางซ้าย

ในกรณีของ LEFT JOIN จะส่งกลับแถวทั้งหมดจากตารางด้านซ้ายและแถวที่ตรงกันจากตารางด้านขวา หากไม่มีค่าที่ตรงกันจากตารางด้านขวา การรวมจะเพิ่มค่า NULL ในตำแหน่งนั้น



ไวยากรณ์มีดังนี้:

เลือกคอลัมน์

จากตารางที่ 1

เข้าร่วมตารางซ้าย2 บน table1.column_name = table2.column_name;

เข้าร่วมอย่างถูกต้อง

อย่างที่คุณเดาได้ RIGHT JOIN นั้นตรงกันข้ามกับ LEFT JOIN การรวมประเภทนี้จะส่งกลับแถวทั้งหมดจากตารางด้านขวาและเฉพาะแถวที่ตรงกันจากตารางด้านซ้ายเท่านั้น หากไม่มีแถวที่ตรงกันบนตารางด้านซ้าย การรวมจะเพิ่มค่า NULL เข้าไป

ต่อไปนี้เป็นไวยากรณ์ของ RIGHT JOIN:

เลือกคอลัมน์

จากตารางที่ 1

เข้าร่วมตารางที่ 2 อย่างถูกต้อง บน table1.column_name = table2.column_name;

เข้าร่วมด้านนอกเต็มรูปแบบ

การรวมประเภทถัดไปที่คุณจะพบในฐานข้อมูล SQL คือ FULL OUTER JOIN การรวมประเภทนี้จะส่งคืนแถวทั้งหมดเมื่อมีการจับคู่ในตารางทางขวาหรือซ้าย หากไม่มีค่าที่ตรงกันในทั้งสองค่า จะส่งคืนค่า NULL สำหรับคอลัมน์จากตารางที่ไม่มีค่าที่ตรงกัน

ข้อมูลต่อไปนี้แสดงให้เห็นถึงไวยากรณ์ของ FULL OUTER JOIN:

เลือกคอลัมน์

จากตารางที่ 1

ตารางที่ 2 เข้าร่วมด้านนอกแบบเต็ม บน table1.column_name = table2.column_name;

โปรดจำไว้ว่ากลไกฐานข้อมูลบางตัวไม่รองรับ FULL OUTER JOINS เพื่อให้บรรลุเป้าหมายดังกล่าว คุณอาจต้องทำงานร่วมกับ JOINS หรือแบบสอบถามย่อยประเภทอื่น

ตัวอย่าง:

ให้เราสำรวจตัวอย่างบางส่วนเกี่ยวกับวิธีที่เราสามารถใช้การรวมประเภทนี้เพื่อรวมสามตารางใน SQL

ตัวอย่างที่ 1: การใช้ INNER JOIN

เราเริ่มต้นด้วยการเข้าร่วมภายใน สมมติว่าเราต้องการดึงรายการภาพยนตร์ รายการเช่า และรายละเอียดการเช่าที่เกี่ยวข้อง

เราสามารถใช้ INNER JOINS หลายรายการบนตารางที่เกี่ยวข้องได้ดังแสดงในตัวอย่างต่อไปนี้:

เลือก

film.title,

สินค้าคงคลัง.inventory_id,

เช่าrental_date

จาก

ฟิล์ม

สินค้าคงคลังเข้าร่วมภายใน บน

film.film_id = สินค้าคงคลัง.film_id

เช่า INNER JOIN บน

inventory.inventory_id = เช่า.inventory_id;

ในแบบสอบถามตัวอย่างที่กำหนด เราเริ่มต้นด้วยการรวมตารางภาพยนตร์และสินค้าคงคลังตามคอลัมน์ 'film_id' จากนั้นเราจะนำชุดผลลัพธ์มารวมเข้ากับตารางการเช่าตามคอลัมน์ 'inventory_id'

สิ่งนี้ทำให้แน่ใจได้ว่าเราจะรวมสามตารางด้วย INNER JOIN พื้นฐาน ชุดผลลัพธ์จะเป็นดังนี้:

ตัวอย่างที่ 2: การใช้ INNER JOIN และ LEFT JOIN

สมมติว่าตอนนี้เราต้องการรายชื่อภาพยนตร์ รายการสินค้าคงคลังให้เช่า (ถ้ามี) และรายละเอียดการเช่าที่เกี่ยวข้อง

เรายังต้องการให้แน่ใจว่าแม้ว่าภาพยนตร์จะไม่มีพื้นที่โฆษณาให้เช่า แต่เรายังคงรวมพื้นที่ดังกล่าวไว้ในผลลัพธ์ นี่คือจุดที่ INNER JOIN และ LEFT JOIN เข้ามามีบทบาท

ลองพิจารณาตัวอย่างต่อไปนี้:

เลือก

film.title,

สินค้าคงคลัง.inventory_id,

เช่าrental_date

จาก

ฟิล์ม

สินค้าคงคลังเข้าร่วมภายใน บน

film.film_id = สินค้าคงคลัง.film_id

ซ้ายเข้าร่วมการเช่า บน

inventory.inventory_id = เช่า.inventory_id;

ในตัวอย่างนี้ เราใช้ INNER JOIN เพื่อรวมตารางภาพยนตร์และสินค้าคงคลังเพื่อให้แน่ใจว่าเราได้รับชื่อเรื่องที่มีสินค้าคงคลังที่มีอยู่ จากนั้นเราใช้ LEFT JOIN เพื่อเข้าร่วมตารางการเช่าเพื่อดึงรายละเอียดการเช่า หากมี และ NULL สำหรับรายการใดๆ ที่ไม่มีประวัติการเช่า

ชุดผลลัพธ์จะเป็นดังนี้:

บทสรุป

ในบทช่วยสอนนี้ เราได้เรียนรู้เกี่ยวกับ JOINS ประเภทต่างๆ ใน ​​SQL วิธีการทำงาน และวิธีที่เราสามารถใช้เพื่อรวมสามตารางเข้าด้วยกัน