Join merupakan sebuah operasi yang digunakan untuk mendapatkan data gabungan dari dua tabel atau lebih. Pada SQL Server terdapat tiga jenis join yaitu:

Cara Join Antar Tabel Menggunakan SQL
1. Cross Join (cartesian)
Menghasilkan kombinasi semua baris yang terdapat dalam tabel, baik yang berpasangan maupun tidak berpasangan. Meskipun join ini tidak pernah digunakan namun Cross Join merupakan dasar dari join antar tabel.
2. Inner Join
Join ini hanya menghasilkan output berupa kombinasi baris-baris yang berpasangan saja, baris lainnya akan dieleminasi dan baris lain yang tidak mempunyai pasangan juga akan disingkirkan.
3. Outer Join
Hampir sama dengan Inner Join perbedaannya terletak pada baris yang tidak mempunyai pasangan akan turut diproses. Outer Join masih dibagi menjadi tiga lagi:
- Left Outer Join
- Right Outer Join
- Full Outer Join
4. Cross Join
Perintah dasarnya:
SELECT * FROM tabel1, tabel2, tabel3, ...
atau
SELECT * FROM tabel1.field1, tabel2.field1, tabel3.field1, ...
contoh:
select * from nasabah, cabang_bank
select * from nasabah.idnasabah, nasabah.nama_nasabah,
cabang_bank.nama_cabang from nasabah, cabang_bank
5. Inner Join
Di bawah ini diberikan beberapa contoh Inner Join, cobalah pada Query Analyzer dan amai hasilnya. Jika perlu kembangkan perintah-perintah tersebut.
Select * from nasabah, nasabah_rek
where nasabah.idnasabah = nasabah_rek.idnasabah
select * from rekening, nasabah_rek
where rekening.norek = nasabah.norek
select a.nama_nasabah, b.kode_cabang, c.norek
from nasabah a, rekening b, nasabah_rek c
where a.idnasabah = c.idnasabah and b.norek = c.norek
select * from nasabah a inner join nasabah_rek b
on a.idnasabah = b.idnasabah
select * from rekening a join nasabah_rek b on a.norek = b.norek
select a.nama_nasabah, b.kode_cabang, c.norek
from nasabah a join nasabah_rek c
on a.idnasabah = c.idnasabah join rekening b on b.norek = c.norek
6. Outer Join
Berikut ini contoh penggunaan Left Outer Join:
select * from nasabah left join nasabah_rek
on nasabah.idnasabah = nasabah_Rek.idnasabah
select a.nama_nasabah, b.kode_cabang, c.norek
from nasabah a left join nasabah_rek c
on a.idnasabah = c.idnasabah left join rekening b
on b.norek = c.norek
Berikut ini contoh penggunaan Right Outer Join:
select * from nasabah right join nasabah_rek
on nasabah.idnasabah = nasabah_rek.idnasabah
Berikut ini contoh penggunaan Full Outer Join:
select * nasabah full join nasabah_rek
On nasabah.idnasabah = nasabah_rek.idnasabah
Berikut ini contoh perintah untuk melihat perbedaan antara Inner Join dan Outer Join, contoh:
select a.norek, b.nama_cabang
from rekening a inner join cabang_bank b
on a.kode_cabang = b.Kode_cabang
Contoh lainnya:
select a.norek, b.nama_cabang from rekening a
left outer join cabang_bank b on a.kode_cabang = b.kode.cabang
Select a.norek, b.nama_cabang from rekening a
right outer join cabang_bank b on a.kode_cabang = b.kode.cabang
Select a.norek, b.nama_cabang from rekening a
full outer join cabang_bank b on a.kode_cabang = b.kode.cabang
Secara sederhana dapat disimpulkan bahwa Cross Join merupakan jenis join yang tidak memakai persyaratan. Sementara jenis join lainnya memerlukan persyaratan. Persyaratan yang dimaksud disini yaitu data pada kolom FK (kunci relasi) di tabel transaksi harus sama dengan data pada kolom PK (kunci primer) di tabel master.
Persyaratan tersebut dapat ditulis sebagai berikut atau sebaliknya:
TabelMaster.KunciPrimary = TabelTransaksi.KunciForeign
Oleh sebab itu keharusan FK dan PK yang saling berhubungan maka Inner Join dan Outer Join hanya dapt dilakukan pada tabel yang memiliki relasi saja. Sementara Cross Join dapat dilakukan pada sembarang/semua tabel.
TUGAS
Sebelum menerima tugas dari dosen pelajari sekali lagi Bab 10 Join Antar Tabel diatas, agar lebih mudah dalam memahami dan menerima tugas yang diberikan.
Nama Tabel Buku
| Nama Field | Tipe Data | Lebar | Keterangan |
|------------|-----------|-------|--------------------------|
| Idbuku | Varchar | 2 | Nomor identitas buku |
| Idterbit | Varchar | 2 | Nomor identitas penerbit |
| Judul | Varchar | 100 | Judul buku |
| Penulis | Varchar | 30 | Nama penulis buku |
| Harga | Integer | 6 | Harga satuan buku |
Nama Tabel Penerbit
| Nama Field | Tipe Data | Lebar | Keterangan |
|------------|-----------|-------|--------------------------|
| Idterbit | Varchar | 2 | Nomor identitas penerbit |
| Namaterbit | Varchar | 50 | nama penerbit |
| Alamat | Varchar | 100 | Alamat penerbit |
Nama Tabel Jual
| Nama Field | Tipe Data | Lebar | Keterangan |
|------------|-----------|-------|--------------------------|
| Idbuku | Varchar | 2 | Nomor identitas buku |
| Nota | Varchar | 5 | Nomor nota penjualan |
| Tgljual | Date | 8 | Tanggal penjualan buku |
| Qty | Integer | 2 | Jumlah buku yang terjual |