Teradata - Bergabung

Gabung digunakan untuk menggabungkan rekaman dari lebih dari satu tabel. Tabel digabungkan berdasarkan kolom / nilai umum dari tabel ini.

Ada berbagai jenis Gabungan yang tersedia.

  • Gabung Batin
  • Gabung Luar Kiri
  • Gabung Luar Kanan
  • Gabung Luar Penuh
  • Bergabung Sendiri
  • Gabung Silang
  • Produksi Cartesian Bergabung

INNER GABUNG

Inner Join menggabungkan catatan dari beberapa tabel dan mengembalikan nilai yang ada di kedua tabel.

Sintaksis

Berikut ini adalah sintaks dari pernyataan INNER JOIN.

SELECT col1, col2, col3…. 
FROM  
Table-1 
INNER JOIN 
Table-2 
ON (col1 = col2) 
<WHERE condition>;

Contoh

Perhatikan tabel karyawan dan tabel gaji berikut.

KaryawanNo Nama depan Nama keluarga JoinedDate DepartemenNo Tanggal lahir
101 Mike James 27/3/2005 1 1/5/1980
102 Robert Williams 25/4/2007 2 3/5/1983
103 Peter Paul 21/3/2007 2 1/4/1983
104 Alex Stuart 1/2/2008 2 6/11/1984
105 Robert James 1/4/2008 3 1/12/1984
KaryawanNo Kotor Deduksi Gaji bersih
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

Kueri berikut ini menggabungkan tabel Karyawan dan tabel Gaji di kolom umum EmployeeNo. Setiap tabel diberi alias A & B dan kolom direferensikan dengan alias yang benar.

SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay 
FROM  
Employee A 
INNER JOIN 
Salary B 
ON (A.EmployeeNo = B. EmployeeNo);

Ketika query di atas dijalankan, ia mengembalikan record berikut. Karyawan 105 tidak disertakan dalam hasil karena tidak memiliki catatan yang cocok di tabel Gaji.

*** 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

OUTER GABUNG

LEFT OUTER JOIN dan RIGHT OUTER JOIN juga menggabungkan hasil dari beberapa tabel.

  • LEFT OUTER JOIN mengembalikan semua rekaman dari tabel kiri dan hanya mengembalikan rekaman yang cocok dari tabel kanan.

  • RIGHT OUTER JOIN mengembalikan semua rekaman dari tabel kanan dan hanya mengembalikan baris yang cocok dari tabel kiri.

  • FULL OUTER JOINmenggabungkan hasil dari LEFT OUTER dan RIGHT OUTER JOINS. Ini mengembalikan baris yang cocok dan tidak cocok dari tabel yang digabungkan.

Sintaksis

Berikut ini adalah sintaks dari pernyataan OUTER JOIN. Anda perlu menggunakan salah satu opsi dari LEFT OUTER JOIN, RIGHT OUTER JOIN atau 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>;

Contoh

Pertimbangkan contoh berikut dari kueri LEFT OUTER JOIN. Ia mengembalikan semua catatan dari tabel Karyawan dan catatan yang cocok dari tabel Gaji.

SELECT A.EmployeeNo, A.DepartmentNo, B.NetPay 
FROM  
Employee A 
LEFT OUTER JOIN 
Salary B 
ON (A.EmployeeNo = B. EmployeeNo) 
ORDER BY A.EmployeeNo;

Ketika query di atas dijalankan, itu menghasilkan keluaran sebagai berikut. Untuk karyawan 105, nilai NetPay adalah NULL, karena tidak memiliki catatan yang cocok dalam tabel Gaji.

*** 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 GABUNG

Cross Join menggabungkan setiap baris dari tabel kiri ke setiap baris dari tabel kanan.

Sintaksis

Berikut ini adalah sintaks dari pernyataan 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;

Ketika query di atas dijalankan, itu menghasilkan keluaran sebagai berikut. EmployeeNo 101 dari tabel Employee digabungkan dengan masing-masing dan setiap catatan dari Tabel Gaji.

*** 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