การดึงข้อมูลจากหลายตารางด้วย SQL Inner Joins

ภายในจะรวมข้อมูลการส่งคืนที่ปรากฏในฐานข้อมูลสองแห่งขึ้นไป

การรวมภายในเป็นส่วนร่วมที่ใช้บ่อยที่สุดใน SQL พวกเขาส่งกลับเฉพาะข้อมูลที่มีอยู่ในตารางฐานข้อมูลตั้งแต่สองตารางขึ้นไป เงื่อนไขการเข้าร่วมจะกำหนดว่าระเบียนใดที่จับคู่กันและถูกระบุไว้ในคำสั่ง WHERE ตัวอย่างเช่นถ้าคุณต้องการรายชื่อของโปรแกรมควบคุม / ยานพาหนะ matchups ซึ่งทั้งยานยนต์และไดรเวอร์อยู่ในเมืองเดียวกันแบบสอบถาม SQL ต่อไปนี้สำเร็จงานนี้:

เลือกนามสกุล, ชื่อ, แท็กจากไดรเวอร์, ยานพาหนะ WHERE drivers.location = vehicles.location

นี่คือผล:

นามสกุลของนามสกุล
----------- ------------ ----
Baker Roland H122JM
Smythe Michael D824HA
Smythe Michael P091YF
Jacobs Abraham J291QR
Jacobs Abraham L990MT

โปรดทราบว่าผลลัพธ์ที่ได้คือสิ่งที่ต้องการ คุณสามารถปรับแต่งแบบสอบถามได้โดยการระบุเกณฑ์เพิ่มเติมในคำสั่ง WHERE สมมติว่าแบบสอบถามต้นฉบับตรงกับไดรเวอร์ที่ผู้ขับขี่รถไม่ได้รับอนุญาตให้ขับรถ (คนขับรถบรรทุกไปยังรถยนต์และในทางกลับกัน) คุณสามารถใช้แบบสอบถามต่อไปนี้เพื่อแก้ไขปัญหานี้:

SELECT lastname, firstname, tag, vehicles.class FROM ไดร์เวอร์ยานพาหนะ WHERE drivers.location = vehicles.location และ drivers.class = vehicles.class

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

นามสกุลชั้น firstname
---------- ------------ ---- ------
รถ Baker Roland H122JM
รถบรรทุก Smythe Michael D824HA
รถ Jacobs Abraham J291QR

แถวที่หายไปจับคู่ Michael Smythe กับรถและ Abraham Jacobs ไปยังรถบรรทุกยานพาหนะที่พวกเขาไม่ได้รับอนุญาตให้ขับรถ

นอกจากนี้คุณยังสามารถ ใช้การรวมด้านในเพื่อรวมข้อมูลจากตารางตั้งแต่สามขึ้น ไป