define('DISALLOW_FILE_EDIT', true); Nur Ichsan's Note » Join Query

Join Query

Posted in Sistem Basis Data on March 22nd, 2011 by nur ichsan – Comments Off on Join Query Tags:

Buat dua buat table seperti gambar dibawah ini :

Inner Join

disebut juga basic join, karena akan menggabungkan tabel dengan mengembalikan nilai asalnya.

select * from Employee  A inner join Departement B On A.DepartmentID=B.DepartmentID

keyword ON digunakan untuk menspesifikasikan tabel yang akan di JOIN. Query diatas bisa akan menghasilkan output yang sama dengan query sebagai berikut :

select * from Employee, Departement where Employee.DepartmentID=Department.DepartmentID

hanya saja jika menggunakan query diatas maka jika tabel banyak di JOIN maka query akan panjang penulisannya dan dari segi waktu proses akan lebih cepat menggunakan JOIN. Hasil dari eksekusi query diatas adalah sebagai berikut :

Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Robinson 34 Clerical 34
Jones 33 Engineering 33
Smith 34 Clerical 34
Steinberg 33 Engineering 33
Rafferty 31 Sales 31

karena John dan Marketing bernilai Null maka data tidak dapat ditampilkan. Keduanya dapat ditampilkan menggunakan Cross JOIN.

Left JOIN

Data yang berada pada tabel sebelah kiri akan ditampilkan semuanya walaupun tidak ada pada tabel kanan. Jika menggunakan Left JOIN maka John akan tetap ditampilkan walaupun tidak ada pada tabel kanan.

select * from Employee  A left join Departement B On A.DepartmentID=B.DepartmentID
Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Jones 33 Engineering 33
Rafferty 31 Sales 31
Robinson 34 Clerical 34
Smith 34 Clerical 34
John NULL NULL NULL
Steinberg 33 Engineering 33
Right JOIN
Data yang berada pada tebel sebelah kanan akan ditampilkan walaupun tidak ada pada tebel kiri. Pada kasus tabel diatas data Marketing akan tetap ditampilkan.
select * from Employee  A right join Departement B On A.DepartmentID=B.DepartmentID
Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Smith 34 Clerical 34
Jones 33 Engineering 33
Robinson 34 Clerical 34
Steinberg 33 Engineering 33
Rafferty 31 Sales 31
NULL NULL Marketing 35

Cross JOIN

Akan menampilkan semua data pada kedua tabel. Jika tabel kanan berisi 6 rows dan tabel kiri beisi 4 rows maka hasil dari JOIN yang dilakukan sebanyak 24 rows.

select * from Employee  A cross join Departement B On A.DepartmentID=B.DepartmentID

Query diatas mempunyai fungsi yang sama dengan dengan query dibawah ini :

select * from Employee, Department

Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Rafferty 31 Sales 31
Jones 33 Sales 31
Steinberg 33 Sales 31
Smith 34 Sales 31
Robinson 34 Sales 31
John NULL Sales 31
Rafferty 31 Engineering 33
Jones 33 Engineering 33
Steinberg 33 Engineering 33
Smith 34 Engineering 33
Robinson 34 Engineering 33
John NULL Engineering 33
Rafferty 31 Clerical 34
Jones 33 Clerical 34
Steinberg 33 Clerical 34
Smith 34 Clerical 34
Robinson 34 Clerical 34
John NULL Clerical 34
Rafferty 31 Marketing 35
Jones 33 Marketing 35
Steinberg 33 Marketing 35
Smith 34 Marketing 35
Robinson 34 Marketing 35
John NULL Marketing 35

Full JOIN

Pada dasarnya adalah gabungan antara Left dan Right JOIN. Jadi data-data yang ada pada kedua tabel akan ditampilkan semuanya walau tidak ada pada tabel lainnya.

select * from Employee  A Full join Departement B On A.DepartmentID=B.DepartmentID

Jika menggunakan Left dan Right JOIN maka query nya sebagai berikut :

select * from Employee  A left join Departement B On A.DepartmentID=B.DepartmentID
UNION
select * from Employee  A right join Departement B On A.DepartmentID=B.DepartmentID
Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID
Smith 34 Clerical 34
Jones 33 Engineering 33
Robinson 34 Clerical 34
John NULL NULL NULL
Steinberg 33 Engineering 33
Rafferty 31 Sales 31
NULL NULL Marketing 35

Semoga Bermanfaat.

*NB : Query diatas saya jalankan pada Microsoft SQL Server

Employee.LastNameEmployee.DepartmentIDDepartment.DepartmentNameDepartment.DepartmentIDSmith34Clerical34Jones33Engineering33Robinson34Clerical34JohnNULLNULLNULLSteinberg33Engineering33Rafferty31Sales31NULLNULLMarketing35
Skip to toolbar