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