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

JOIN ใน SQL Server

JOIN ใน SQL Server

JOIN ใช้ดึงข้อมูลจากหลายตารางโดยเชื่อมโยงผ่านคอลัมน์ที่เกี่ยวข้อง มี 4 ประเภทหลัก:

  1. INNER JOIN - คืนเฉพาะแถวที่ match ทั้งสองฝั่ง
  2. LEFT OUTER JOIN (LEFT JOIN) - คืนทุกแถวฝั่งซ้าย + match ฝั่งขวา
  3. RIGHT OUTER JOIN (RIGHT JOIN) - คืนทุกแถวฝั่งขวา + match ฝั่งซ้าย
  4. FULL OUTER JOIN (FULL JOIN) - คืนทุกแถวทั้งสองฝั่ง

1. INNER JOIN

SELECT columns
FROM table1
INNER JOIN table2 ON table1.col = table2.col;

JOIN ใน SQL Server

ผลลัพธ์ = ส่วนทับซ้อน (สีฟ้า)

ตัวอย่าง

SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
INNER JOIN donhang ON nhacung.nhacung_id = donhang.nhacung_id;

ข้อมูลตัวอย่าง:

nhacung_idnhacung_ten
10000IBM
10001Hewlett Packard
10002Microsoft
10003NVIDIA
donhang_idnhacung_iddonhang_ngay
500125100002003/05/12
500126100012003/05/13
500127100042003/05/14

ผลลัพธ์: คืน IBM, Hewlett Packard (match) — Microsoft, NVIDIA หาย (ไม่มี order), order 500127 หาย (ไม่มี supplier)

รูปแบบเก่า (ไม่แนะนำ)

SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung, donhang
WHERE nhacung.nhacung_id = donhang.nhacung_id;

2. LEFT OUTER JOIN

SELECT columns
FROM table1
LEFT [OUTER] JOIN table2 ON table1.col = table2.col;

JOIN ใน SQL Server

ผลลัพธ์ = ทั้ง table1 (สีฟ้า) + match จาก table2

ตัวอย่าง

SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
LEFT OUTER JOIN donhang ON nhacung.nhacung_id = donhang.nhacung_id;

คืน supplier ทั้ง 4 แถว Microsoft, NVIDIA มี donhang_ngay = NULL

3. RIGHT OUTER JOIN

SELECT columns
FROM table1
RIGHT [OUTER] JOIN table2 ON table1.col = table2.col;

JOIN ใน SQL Server

ผลลัพธ์ = ทั้ง table2 + match จาก table1

ตัวอย่าง

SELECT donhang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten
FROM nhacung
RIGHT OUTER JOIN donhang ON nhacung.nhacung_id = donhang.nhacung_id;

คืน order ทั้ง 3 แถว order 500127 มี nhacung_ten = NULL

4. FULL OUTER JOIN

SELECT columns
FROM table1
FULL [OUTER] JOIN table2 ON table1.col = table2.col;

JOIN ใน SQL Server

ผลลัพธ์ = Union ของทั้งสองตาราง (สีเขียว)

ตัวอย่าง

SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
FULL OUTER JOIN donhang ON nhacung.nhacung_id = donhang.nhacung_id;

คืน supplier ทั้ง 4 + order ทั้ง 3 Microsoft, NVIDIA มี donhang_ngay=NULL, order 500127 มี nhacung_id/ten=NULL

สรุปเลือกใช้

  • ต้องการเฉพาะที่ match → INNER JOIN
  • ต้องการข้อมูลฝั่งซ้ายหมด → LEFT JOIN
  • ต้องการข้อมูลฝั่งขวามหมด → RIGHT JOIN
  • ต้องการข้อมูลทั้งสองฝั่งหมด → FULL JOIN