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