Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> SQL

SQL INNER JOIN: คู่มือฉบับสมบูรณ์

คำสั่ง SQL INNER JOIN คืนแถวที่มีค่าตรงกันใน 2 คอลัมน์ข้าม 2 ตาราง สามารถ join ตารางผ่าน 1 หรือหลายคอลัมน์ JOIN statements เชื่อม 2 ตารางฐานข้อมูลและเปรียบเทียบเนื้อหา

บางครั้งต้องการดึงข้อมูลจาก 2 ตารางขึ้นไปพร้อมกันและรวมผลลัพธ์

เช่น ต้องการรายชื่อสินค้าและชื่อผู้จัดจำหน่ายที่จัดส่งสินค้าเหล่านั้น ข้อมูลชื่อสินค้าและผู้จัดจำหน่ายอยู่ใน 2 ตารางต่างกัน

นี่คือที่มาของ SQL joins ด้วยเงื่อนไข join คุณสามารถรวมข้อมูลจากหลายตารางเป็น หนึ่งชุดผลลัพธ์ (one result set) SQL INNER JOIN เป็นประเภท join ที่คืนเรคอร์ดที่มีค่าคอลัมน์ตรงกันใน 2 ตาราง ในบทช่วยสอนนี้ เราจะอธิบายวิธีใช้ INNER JOIN

SQL INNER JOIN

SQL INNER JOIN ดึงเรคอร์ดทั้งหมดที่มีค่าคอลัมน์ปรากฏใน 2 ตารางที่ระบุ คำสั่ง INNER JOIN ใช้คีย์เวิร์ด ON เพื่อจับคู่ข้อมูลข้าม 2 ตาราง

INNER JOIN เป็นประเภท SQL join ที่พบบ่อยที่สุด ออปอเรเตอร์คืนเรคอร์ดที่มีคู่ในทั้งสองตาราง

ไวยากรณ์ของคีย์เวิร์ด INNER JOIN:

SELECT name
FROM customers
INNER JOIN plans
ON customers.plan_id = plans.id;

คิวรี่นี้รวมแถวจากตาราง "customers" และ "plans" คืนรายชื่อลูกค้าทั้งหมดที่ "plan_id" เท่ากับ ID ใดๆ ในตาราง "plans"

เราใช้ clause INNER JOIN เพื่อ join ตาราง คีย์เวิร์ด ON มาหลังชื่อตารางที่ join สามารถระบุเงื่อนไขหลายอย่างหลัง ON โดยคั่นด้วยจุลภาค

ตัวอย่าง INNER JOIN SQL

ตอนนี้เรามีฐานข้อมูลพนักงานที่เก็บ department_id ของแต่ละพนักงานในตาราง employees สร้างด้วย SQL CREATE TABLE ชื่อแผนกเก็บในตารางแยกชื่อ company_departments

ตาราง employees:

employees
nametitledepartment_id
Luke
Sales Associate1
MikeSales Associate1
HannahSales Associate1
GeoffSenior Sales Associate1
AlexisSales Associate1
JonahVice President of Sales3
EmmaMarketing Director2

(7 แถว)

ตารางแผนก:

company_departments
department_idname
1sales
2marketing
3executive

(3 แถว)

สมมติต้องการชื่อ ตำแหน่ง และชื่อแผนกของพนักงานทุกคน ข้อมูลอยู่ใน 2 ตาราง: ชื่อและตำแหน่งใน employees ชื่อแผนกใน company_departments

ตาราง employees มีคอลัมน์ department_id เก็บ ID แผนกของแต่ละพนักงาน

ในตาราง company_departments แต่ละแผนกก็มี ID (เป็น primary key) ดังนั้นเราสามารถจับคู่ department_id ของพนักงานกับรายชื่อแผนกได้ เพื่อหาชื่อแผนกของพนักงานคนนั้น

คิวรี่ดึงชื่อ ตำแหน่ง และชื่อแผนก:

SELECT Employees.Name, Employees.Title, Company_Departments.Name FROM Employees INNER JOIN Company_Departments ON Employees.Department_ID = Company_Departments.Department_ID;

ผลลัพธ์แถวที่จับคู่ได้:

nametitlename
AlexisSales AssociateSales
GeoffSenior Sales AssociateSales
HannahSales AssociateSales
MikeSales AssociateSales
LukeSales AssociateSales
EmmaMarketing DirectorMarketing
JonahVice President of SalesExecutive

บรรทัดแรก: บอกฐานข้อมูลดึงชื่อและตำแหน่งจาก employees และชื่อแผนกจาก company_departments

บรรทัดที่สอง: ระบุดึงข้อมูลพนักงานจาก employees ใช้ INNER JOIN เชื่อมกับ company_departments ที่มีชื่อแผนก

บรรทัดสุดท้าย: ลิงก์ทั้ง 2 ตารางด้วยฟิลด์ร่วม คือ department_id

สรุป

คำสั่ง SQL INNER JOIN ดึงเรคอร์ดที่มีค่าคอลัมน์ตรงกัน 2 คอลัมน์ข้าม 2 ตาราง คำสั่ง ON ให้ระบุเงื่อนไขที่ inner join ทำงาน

การเชี่ยวชาญ joins เป็นส่วนสำคัญของการสืบค้นฐานข้อมูล SQL และจะพาคุณใกล้สู่การเป็นผู้เชี่ยวชาญ SQL

เราเขียนคู่มือ how to learn SQL ช่วยผู้เรียนเช่นคุณเชี่ยวชาญ SQL มีรายการแหล่งเรียนรู้ชั้นนำ หลักสูตร และคำแนะนำ ดูได้ที่หน้า How to Learn SQL