Sistem basis data_Equijoin dan self join

Equijoin dan self join

Equi Join didasarkan pada kondisi untuk perbandingan, dapat terjadi pada setiap INNER, OUTER atau SELF bergabung dalam SQL.
SQL JOIN digunakan untuk mengambil informasi yang terkait pada satu atau lebih tabel. Secara garis besar JOIN dibagi menjadi Equi Join dan Non-Equi Join.

Equi Join merupakan Join yang menggunakan tanda equal (=) untuk membandingkan Operatornya. Secara garis besar Equi Joins terbagi menjadi
1.    Inner JOIN : JOIN yang hanya menampilkan data pada kolom yang sesuai dengan yang dibandingkan, tidak akan mengeluarkan nilai NULL pada kolom yang dibandingkan. Ada beberapa jenis JOIN pada Inner JOIN diantaranya :

Natural JOIN : bisa digunakan jika pada tabel yang di join terdapat kolom(atribut) yang memiliki nama yang sama dan type data yang sama. Pada waktu JOIN kolom tersebut secara otomatis akan digunakan untuk dibandingkan, dan kita tidak bisa menentukan kolom mana yang akan digunakan untuk dibandingkan. Jika natural join ini digunakan pada tabel yang ternyata memiliki kolom yang sama tetapi berbeda type data maka akan terjadi error.
JOIN-USING : bisa digunakan jika pada tabel yang di join terdapat kolom yang memiliki nama yang sama untuk tipe data boleh sama boleh berbeda. Pada waktu JOIN kita bisa memilih kolom tertentu yang akan digunakan untuk dibandingkan, hal ini akan sangat berguna jika terdapat lebih dari satu kolom yang memiliki nama yang sama pada 2 tabel yang akan di JOIN.
JOIN-ON : bisa digunakan walapun pada tabel yang di join tidak terdapat kolom yang memiliki nama yang sama, atau bisa menggunakan kolom dengan nama yang berbeda untuk dibandingkan ketika JOIN.
JOIN dengan tabel yang sama bisa juga disebut SELF-JOIN
2.    Outer JOIN : tidak hanya menampilkan kolom yang sesuai dengan yang dibandingkan, tetapi juga kolom yang tidak sesuai dengan yang dibandingkan.

Left-Outer JOIN : akan menampilkan semua baris pada tabel yang terletak pada kiri syntax JOIN walapun tidak sesuai dengan tabel yang berada pada sebelah kanan JOIN.
Right-Outer JOIN : akan menampilkan semua baris pada tabel yang terletak pada kanan syntax JOIN walapun tidak sesuai dengan tabel yang berada pada sebelah kiri JOIN.
FULL-Outer JOIN : akan menampilkan semua baris pada tabel yang terletak pada kiri dan kanan syntax JOIN walapun tidak sesuai ketika dibandingkan.
Non-Equi Join merupakan join yang menggunakan tanda selain equal (=), misalkan tanda !=, >, <, >=, <=, dll
Cross Join : mengembalikan produk cartesian dari baris dari tabel dalam bergabung.
Dengan kata lain, hal itu akan menghasilkan baris yang menggabungkan setiap baris dari tabel pertama dengan setiap baris dari tabel kedua.
Klausa Using atau Join-U-using bisa digunakan jika pada tabel yang dijoin terdapat kolom yang memilik nama yang sama untuk tipe data boleh sama boleh berbeda. Pada waktu Join kita dapat  memilih kolom tertentu yang akan digunakan untuk dibandingkan, hal ini akan sangat berguna jika terdapat lebih dari satu kolom yang memiliki nama yng sama pada 2 tabel yang akan di JOIN. 

INTERSECTION (Irisan)
buat tabel perusahaan A dan perisahaan B berisi nik (char 2) dan nama (varchar 20) memakai INNER JOIN:
1. select * from perusahaanA
2. select * from perusahaanB
3. select perusahaanA.*, perusahaanB.*
-> from perusahaanA inner join perusahaanB
-> on perusahaanA.nik=perusahaanB.nik;
(menampilkan nik dan nama dari data karyawan yang merangkap bekerja di perusahaanA dan B saja)/ disebut juga irisan
memakai LEFT JOIN
1. select perusahaanA.*, perusahaanB.*
-> from perusahaanA left join perusahaanB
-> on perusahaanA.nik=perusahaanB.nik;
(mengutamakan data di sebelah kiri, sehingga isi dari tabel di sebelah kanan di isi null)
memakai RIGHT JOIN:
1. select perusahaanA.*, perusahaanB.*
-> from perusahaanA right join perusahaanB
-> on perusahaanA.nik=perusahaanB.nik;
(mengutamakan isi dari tabel di sebelah kanan, sehingga isi di tabel di sebelah kiri yang di isi NULL pada karyawan yang tidak merangkap pekerjaan)
UNION (Gabungan)
dipakai untuk menggabungkan beberapa perintah SELECT yang menghasilkan sebuah gabungan.
SELECT * FROM A
UNION
SELECT * FROM B;
Implementasi:
1. select * from perusahaanA
-> union
-> select * from perusahaanB;
(menampilkan semua data karyawan di perusahaan A dan B, karyawan yang mendobel bekerja di 2 perusahaan di tulis 1 kali saja)
UNION ALL
sama dengan UNION tapi akan menampilkan semua data meskipun data tersebut sama.
SELECT * FROM A
UNION ALL
SELECT * FROM B;
Query bersarang ( Nested Query)
      Dalam SQL dikenal Query bersarang, Query dalam Query
     Contoh : select npm, nama, kd_jurusan from tbl_mahasiswa where kd_jurusan IN ( select kd_jurusan from table jurusan where kd_jurusan='TI0004';

Komentar

Posting Komentar

Postingan populer dari blog ini

Interrupt driven I/O

List Linier (Linked list) Dan Variasinya_Struktur Data

Menghitung Jarak Jatuh Peluru (C++)