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

เข้าร่วมด้านซ้ายของ SQL:คู่มือฉบับสมบูรณ์

SQL LEFT JOIN เป็นประเภทของการรวม SQL การรวมนี้ส่งคืนตารางทั้งหมดจากคอลัมน์ "ซ้าย" ที่ระบุและแถวที่เกี่ยวข้องที่ตรงกับเงื่อนไขเฉพาะในคอลัมน์ "ขวา"

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

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

ในบทช่วยสอนนี้ เราจะแบ่งประเภทการเข้าร่วมใน SQL . ประเภทหนึ่ง :LEFT JOIN . เราจะหารือกันที่ LEFT JOINs มีประโยชน์ และคุณจะนำไปใช้ใน SQL . ได้อย่างไร แบบสอบถาม

SQL ซ้ายเข้าร่วม

SQL LEFT JOIN ส่งกลับระเบียนทั้งหมดจากตาราง "ซ้าย" ที่ระบุในแบบสอบถามของคุณ โดยจะจับคู่ค่าจากตารางนี้ตามเงื่อนไขของคุณกับตารางที่ "ถูกต้อง" รายการที่ตรงกันจะถูกส่งคืนนอกเหนือจากระเบียนทั้งหมดจากตาราง "ซ้าย" _LEFT JOIN_s เป็นประเภทของการรวมภายนอกของ SQL

ตัวอย่างเช่น คุณสามารถใช้ left join เพื่อรับรายชื่อแผนกสำหรับพนักงานแต่ละคน วิธีนี้จะช่วยให้คุณเห็นพนักงานทุกคนแม้ว่าจะไม่ได้มอบหมายแผนกก็ตาม

ไวยากรณ์พื้นฐานสำหรับ LEFT JOIN ดำเนินการดังนี้:

SELECT Table1.Column1, Table2.Column1
FROM Table1
LEFT JOIN Table2
ON Table1.Column2 = Table1.Column2;

เราเริ่มต้นการรวมของเราด้วยคำสั่ง SQL SELECT ตารางในคำสั่ง FROM คือตาราง "ซ้าย" ของเรา จากนั้น เราใช้ LEFT JOIN คำสำคัญ. ซึ่งจะทำให้เราสามารถระบุตารางที่ "ถูกต้อง"

81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้

ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก

เราใช้คำสั่ง ON เพื่อกำหนดเงื่อนไขที่ตารางของเราเชื่อมต่อกัน ซ้ายเข้าร่วม เป็นประเภทของการรวมภายนอก ดังนั้น คุณอาจเห็นการรวมประเภทนี้เรียกว่า การรวมภายนอกด้านซ้าย .

ลองใช้ตัวอย่างเพื่อแสดง LEFT JOINs ทำงาน

LEFT JOIN ตัวอย่าง SQL

สมมติว่าเราต้องการรับรายชื่อแผนกที่พนักงานแต่ละคนทำงาน เราต้องการดึงข้อมูลนี้โดยใช้แบบสอบถามเดียว นี่คือข้อความค้นหาที่ช่วยให้เราได้รับข้อมูลนี้:

SELECT employees.name, employees.title, company_departments.name AS DeptName
FROM employees
LEFT JOIN company_departments
ON employees.department_id = company_departments.department_id;

แบบสอบถามของเราส่งคืนเจ็ดระเบียน:

ชื่อ หัวเรื่อง ชื่อแผนก
ลุค พนักงานขาย ยอดขาย
ไมค์ พนักงานขาย ยอดขาย
ฮันนาห์ พนักงานขาย ยอดขาย
เจฟฟ์ พนักงานขายอาวุโส ยอดขาย
อเล็กซิส พนักงานขาย ยอดขาย
เอ็มม่า ผู้อำนวยการฝ่ายการตลาด การตลาด
โจนาห์ รองประธานฝ่ายขาย ผู้บริหาร

(7 แถว)

ในบรรทัดแรกของแบบสอบถาม เราระบุว่าเราต้องการรับสามคอลัมน์ เราเรียกค้นชื่อพนักงาน ตำแหน่ง และชื่อแผนกที่พวกเขาทำงาน AS DeptName บอกข้อสงสัยของเราว่าคอลัมน์ชื่อแผนกควรเรียกว่า DeptName .

ในบรรทัดถัดไป เราระบุว่าเราต้องการรับข้อมูลจาก พนักงาน . ของเรา โต๊ะ. จากนั้น เราสร้าง LEFT JOIN ระหว่างโต๊ะนั้นกับ company_departments . ในบรรทัดสุดท้าย เราเชื่อมโยงตารางทั้งสองเข้าด้วยกันโดยใช้ค่าทั่วไป:department_id

ซ้ายเข้าร่วม ส่งคืนเฉพาะแถวทั้งหมดจากตารางด้านซ้าย และแถวจากตารางด้านขวาที่ตรงตามเงื่อนไขการรวม

หากเรามีพนักงานที่มี ID แผนก 9 และแผนกนั้นไม่มีอยู่ พวกเขาจะยังคงปรากฏในแบบสอบถามของเรา หากเรามีแผนกของบริษัทที่ไม่มีอยู่ แผนกนั้นจะไม่ปรากฏใน JOIN . ของเรา สอบถามค่ะ

มาเรียกใช้แบบสอบถามอีกครั้ง แต่คราวนี้มีพนักงานใหม่ในฐานข้อมูลของเรา นี่คือค่านิยมสำหรับพนักงานใหม่ของเรา:

ชื่อ หัวเรื่อง แผนก_id
อดัม พนักงานขายอาวุโส 9

(1 แถว)

รหัสแผนก 9 ไม่มีอยู่ในตารางของเรา company_departments . แต่เมื่อเราเรียกใช้แบบสอบถามการเข้าร่วมด้านซ้ายเช่นเดียวกับด้านบน บันทึกของ Adam ก็ยังถูกรวมอยู่ด้วย เนื่องจากเรากำลังใช้ LEFT JOIN . นี่คือผลลัพธ์ของ INNER JOIN . แบบเดียวกัน แบบสอบถามที่เราดำเนินการข้างต้น แต่ด้วยบันทึกของอดัม:

ชื่อ หัวเรื่อง ชื่อแผนก
ลุค พนักงานขาย ยอดขาย
ไมค์ พนักงานขาย ยอดขาย
ฮันนาห์ พนักงานขาย ยอดขาย
เจฟฟ์ พนักงานขายอาวุโส ยอดขาย
อเล็กซิส พนักงานขาย ยอดขาย
เอ็มม่า ผู้อำนวยการฝ่ายการตลาด การตลาด
โจนาห์ รองประธานฝ่ายขาย ผู้บริหาร
อดัม พนักงานขายอาวุโส

บทสรุป

SQL LEFT JOIN ค้นหามากกว่าหนึ่งตารางและส่งคืนแถวทั้งหมดจากตาราง "ซ้าย" ที่ระบุ พวกเขายังส่งคืนแถวจากตารางด้านขวาโดยที่ JOIN ตรงตามเงื่อนไข

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

เราได้เขียนคู่มือ How to Learn SQL เพื่อช่วยให้ผู้เรียนพัฒนาความรู้เกี่ยวกับ SQL คู่มือประกอบด้วยรายการแหล่งข้อมูลการเรียนรู้ชั้นนำและคำแนะนำจากผู้เชี่ยวชาญที่จะช่วยคุณในแบบของคุณ ดูคำแนะนำในหน้า How to Learn SQL ของเรา