Teradata - เข้าร่วม
เข้าร่วมใช้เพื่อรวมระเบียนจากตารางมากกว่าหนึ่งตาราง ตารางถูกรวมตามคอลัมน์ / ค่าทั่วไปจากตารางเหล่านี้
การเข้าร่วมมีหลายประเภท
- การเข้าร่วมภายใน
- เข้าร่วมด้านนอกซ้าย
- เข้าร่วมภายนอกขวา
- เข้าร่วมภายนอกเต็มรูปแบบ
- เข้าร่วมด้วยตนเอง
- เข้าร่วมข้าม
- เข้าร่วมการผลิตคาร์ทีเซียน
เข้าร่วมภายใน
Inner Join รวมระเบียนจากหลายตารางและส่งคืนค่าที่มีอยู่ในทั้งสองตาราง
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง INNER JOIN
SELECT col1, col2, col3….
FROM
Table-1
INNER JOIN
Table-2
ON (col1 = col2)
<WHERE condition>;
ตัวอย่าง
พิจารณาตารางพนักงานและตารางเงินเดือนต่อไปนี้
พนักงาน | ชื่อจริง | นามสกุล | วันที่เข้าร่วม | แผนก | วันที่เกิด |
---|---|---|---|---|---|
101 | ไมค์ | เจมส์ | 27/3/2548 | 1 | 1/5/1980 |
102 | โรเบิร์ต | วิลเลียมส์ | 25/4/2550 | 2 | 5/3/1983 |
103 | ปีเตอร์ | พอล | 21/3/2550 | 2 | 1/1/2553 |
104 | อเล็กซ์ | สจวร์ต | 1/2/2561 | 2 | 11/6/1984 |
105 | โรเบิร์ต | เจมส์ | 1/4/2561 | 3 | 1/12/1984 |
พนักงาน | ขั้นต้น | การหักเงิน | NetPay |
---|---|---|---|
101 | 40,000 | 4,000 | 36,000 |
102 | 80,000 | 6,000 | 74,000 |
103 | 90,000 | 7,000 | 83,000 |
104 | 75,000 | 5,000 | 70,000 |
แบบสอบถามต่อไปนี้รวมตารางพนักงานและตารางเงินเดือนในคอลัมน์ทั่วไป EmployeeNo แต่ละตารางจะถูกกำหนดนามแฝง A & B และคอลัมน์จะถูกอ้างอิงด้วยนามแฝงที่ถูกต้อง
SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay
FROM
Employee A
INNER JOIN
Salary B
ON (A.EmployeeNo = B. EmployeeNo);
เมื่อดำเนินการค้นหาข้างต้นจะส่งคืนระเบียนต่อไปนี้ พนักงาน 105 ไม่รวมอยู่ในผลลัพธ์เนื่องจากไม่มีระเบียนที่ตรงกันในตารางเงินเดือน
*** Query completed. 4 rows found. 3 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo DepartmentNo NetPay
----------- ------------ -----------
101 1 36000
102 2 74000
103 2 83000
104 2 70000
เข้าร่วมภายนอก
LEFT OUTER JOIN และ RIGHT OUTER JOIN ยังรวมผลลัพธ์จากหลายตาราง
LEFT OUTER JOIN ส่งคืนระเบียนทั้งหมดจากตารางด้านซ้ายและส่งคืนเฉพาะระเบียนที่ตรงกันจากตารางด้านขวา
RIGHT OUTER JOIN ส่งคืนระเบียนทั้งหมดจากตารางด้านขวาและส่งคืนเฉพาะแถวที่ตรงกันจากตารางด้านซ้าย
FULL OUTER JOINรวมผลลัพธ์จากทั้ง LEFT OUTER และ RIGHT OUTER JOINS ส่งคืนทั้งแถวที่ตรงกันและไม่ตรงกันจากตารางที่เข้าร่วม
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง OUTER JOIN คุณต้องใช้หนึ่งในตัวเลือกจาก LEFT OUTER JOIN, RIGHT OUTER JOIN หรือ FULL OUTER JOIN
SELECT col1, col2, col3….
FROM
Table-1
LEFT OUTER JOIN/RIGHT OUTER JOIN/FULL OUTER JOIN
Table-2
ON (col1 = col2)
<WHERE condition>;
ตัวอย่าง
พิจารณาตัวอย่างต่อไปนี้ของแบบสอบถาม LEFT OUTER JOIN ส่งคืนระเบียนทั้งหมดจากตารางพนักงานและบันทึกการจับคู่จากตารางเงินเดือน
SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay
FROM
Employee A
LEFT OUTER JOIN
Salary B
ON (A.EmployeeNo = B. EmployeeNo)
ORDER BY A.EmployeeNo;
เมื่อดำเนินการค้นหาข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ สำหรับพนักงาน 105 ค่า NetPay เป็น NULL เนื่องจากไม่มีระเบียนที่ตรงกันในตารางเงินเดือน
*** Query completed. 5 rows found. 3 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo DepartmentNo NetPay
----------- ------------ -----------
101 1 36000
102 2 74000
103 2 83000
104 2 70000
105 3 ?
ข้ามเข้าร่วม
Cross Join รวมทุกแถวจากตารางด้านซ้ายไปยังทุกแถวจากตารางด้านขวา
ไวยากรณ์
ต่อไปนี้เป็นไวยากรณ์ของคำสั่ง CROSS JOIN
SELECT A.EmployeeNo, A.DepartmentNo, B.EmployeeNo,B.NetPay
FROM
Employee A
CROSS JOIN
Salary B
WHERE A.EmployeeNo = 101
ORDER BY B.EmployeeNo;
เมื่อดำเนินการค้นหาข้างต้นจะสร้างผลลัพธ์ต่อไปนี้ EmployeeNo 101 จากตารางพนักงานจะถูกรวมเข้ากับแต่ละระเบียนจากตารางเงินเดือน
*** Query completed. 4 rows found. 4 columns returned.
*** Total elapsed time was 1 second.
EmployeeNo DepartmentNo EmployeeNo NetPay
----------- ------------ ----------- -----------
101 1 101 36000
101 1 104 70000
101 1 102 74000
101 1 103 83000