คำสั่ง JOIN ของ SQL

SQL join ใช้เพื่อค้นหาข้อมูลจากตารางที่มีความสัมพันธ์กันทางคอลัมน์ระหว่างสองหรือมากกว่าตาราง

Join และ Key

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

ตารางในฐานข้อมูลสามารถเชื่อมโยงกันด้วยกุญแจ หลักประกัน (Primary Key) คือคอลัมน์ที่ในแต่ละบรรทัดมีค่าที่เด่นที่สุด ในตาราง ค่าหลักประกันของแต่ละหลักประกันจะมีค่าเด่นที่สุด จุดประสงค์ของการกระทำนี้เพื่อที่จะเชื่อมโยงข้อมูลระหว่างตารางโดยไม่จำเป็นต้องคัดลอกข้อมูลทั้งหมดในแต่ละตาราง

โปรดดูตาราง "Persons"

Id_P LastName FirstName Address City
1 Adams John Oxford Street London
2 Bush George Fifth Avenue New York
3 Carter Thomas Changan Street ปักกิ่ง

โปรดเล็งดูว่า "Id_P" คอลัมน์เป็นหลักประกันของตาราง Persons ซึ่งหมายความว่าไม่มีบรรทัดใดที่มีค่า Id_P ที่เหมือนกัน แม้ว่าชื่อของบุคคลทั้งสองจะเหมือนกันเช่นกัน ตัว Id_P ยังสามารถแยกเป็นบุคคลที่แยกต่างกัน

ต่อมา โปรดดูตาราง "Orders"

Id_O OrderNo Id_P
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 65

โปรดเล็งดูว่า "Id_O" คอลัมน์เป็นหลักประกันของตาราง Orders พร้อมด้วย "Orders" คอลัมน์ "Id_P" ใช้เพื่ออ้างอิงตาราง "Persons" โดยไม่จำเป็นต้องใช้ชื่อจริงของพวกเขา

โปรดสังเกตว่า "Id_P" คอลัมน์ที่เชื่อมต่อสองตารางด้านบน

อ้างอิงตารางสองตาราง

เราสามารถดึงข้อมูลจากตารางสองตารางโดยอ้างอิงตาราง

ใครที่สั่งซื้อสินค้า และพวกเขาสั่งซื้ออะไร?

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

ผลลัพธ์ตาราง:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

SQL JOIN - การใช้ JOIN

นอกจากวิธีด้านบน เรายังสามารถใช้คำถาม JOIN ในการดึงข้อมูลจากตารางสองตาราง

หากเราต้องการแสดงบรรทัดสั่งซื้อของทุกคน สามารถใช้คำสั่ง SELECT ด้านล่างนี้

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons
INNER JOIN Orders
ON Persons.Id_P = Orders.Id_P
ORDER BY Persons.LastName

ผลลัพธ์ตาราง:

LastName FirstName OrderNo
Adams John 22456
Adams John 24562
Carter Thomas 77895
Carter Thomas 44678

JOIN SQL ต่างกัน

นอกจาก INNER JOIN (การเชื่อมต่อภายใน) ที่เราใช้ในตัวอย่างด้านบน เรายังสามารถใช้เชื่อมต่ออื่นๆ

ด้านล่างนี้นับได้รายการ JOIN ที่คุณสามารถใช้ได้ และความแตกต่างระหว่างมัน

  • JOIN: กลับคืนบรรทัดเมื่อมีการตรวจสอบที่ตรงกันในตาราง
  • LEFT JOIN: กลับคืนบรรทัดทุกตารางจากฝั่งซ้าย แม้ว่าจะไม่มีการตรวจสอบที่ตรงกันในฝั่งขวา
  • RIGHT JOIN: กลับคืนบรรทัดทุกตารางจากฝั่งขวา แม้ว่าจะไม่มีการตรวจสอบที่ตรงกันในฝั่งซ้าย
  • FULL JOIN: กลับคืนบรรทัดเมื่อมีการตรวจสอบที่ตรงกันในหนึ่งในตาราง