Dalam proses belajar SQL database, memahami cara menggabungkan data dari beberapa tabel adalah langkah penting yang tidak bisa dilewatkan. Setelah sebelumnya kita membahas fungsi agregat dan grouping untuk mengolah data dalam jumlah besar, sekarang saatnya masuk ke teknik lanjutan yang sering digunakan dalam kasus yang lebih spesifik.
Di artikel kali ini, kita akan melanjutkan pembahasan ke materi JOIN yang lebih advanced. Jika sebelumnya Anda sudah mengenal JOIN dasar untuk menggabungkan tabel, maka pada bagian ini kita akan fokus pada dua jenis JOIN yang punya fungsi khusus, yaitu SELF JOIN dan CROSS JOIN.
Kedua jenis JOIN ini biasanya digunakan dalam kondisi tertentu yang tidak bisa diselesaikan dengan JOIN biasa, sehingga penting untuk dipahami agar Anda bisa lebih fleksibel dalam mengolah data di SQL.
Apa Itu JOIN Lanjutan?
Dalam proses belajar SQL database, tidak semua kebutuhan penggabungan data bisa diselesaikan dengan JOIN dasar. Ada kondisi tertentu yang membutuhkan teknik yang lebih spesifik, yang dikenal sebagai JOIN lanjutan.
JOIN lanjutan biasanya digunakan untuk:
- Menghubungkan data dalam satu tabel yang sama
- Menghasilkan kombinasi seluruh data dari beberapa tabel
Pada artikel ini, kita akan fokus membahas dua jenis JOIN lanjutan yang cukup sering digunakan, yaitu SELF JOIN dan CROSS JOIN. Dengan memahami kedua teknik ini, Anda bisa mengolah data dengan lebih fleksibel, terutama saat menghadapi struktur data yang lebih kompleks.
Mengenal SELF JOIN
SELF JOIN adalah teknik JOIN yang digunakan untuk menggabungkan sebuah tabel dengan dirinya sendiri.
Sekilas mungkin terdengar aneh, tapi konsep ini sangat berguna ketika dalam satu tabel terdapat relasi antar data. Misalnya:
- relasi pertemanan (user dengan user lain)
- hubungan atasan dan bawahan dalam satu tabel karyawan
- struktur organisasi atau hierarki lainnya
Dengan SELF JOIN, Anda bisa “memperlakukan” satu tabel seolah-olah menjadi dua tabel berbeda, sehingga relasi antar baris di dalamnya bisa dianalisis dengan lebih mudah.
Contoh Kasus SELF JOIN
Sebagai contoh, terdapat tabel mahasiswa dengan struktur berikut:
Data Tabel mahasiswa

Kolom id_teman menunjukkan relasi antar mahasiswa.
Query SELF JOIN
Berikut adalah contoh penggunaan query SELF JOIN pada database.
SELECT a.nama AS mahasiswa, b.nama AS teman
FROM mahasiswa a
JOIN mahasiswa b ON a.id_teman = b.id;Hasil Query SELF JOIN
Berikut adalah hasil query SELF JOIN yang menampilkan relasi antar mahasiswa:
Data Tabel hasil self join

Penjelasan Cara Kerja SELF JOIN
Pada proses ini, tabel mahasiswa digunakan dua kali:
- sebagai data utama (alias a)
- sebagai data relasi (alias b)
JOIN dilakukan dengan kondisi:
a.id_teman = b.idArtinya:
- Andi terhubung dengan Budi
- Budi terhubung dengan Andi
- Citra terhubung dengan Budi
Dengan demikian, relasi yang sebelumnya berupa ID dapat ditampilkan menjadi nama yang lebih mudah dipahami.
Kapan Menggunakan SELF JOIN?
SELF JOIN umumnya digunakan dalam kondisi berikut:
- Relasi antar data dalam satu tabel
- Struktur organisasi (atasan dan bawahan)
- Data hierarki (parent dan child)
- Relasi antar pengguna
Mengenal CROSS JOIN
Selain SELF JOIN, terdapat juga CROSS JOIN yang memiliki fungsi berbeda. CROSS JOIN digunakan untuk menghasilkan seluruh kombinasi kemungkinan dari dua tabel.
Contoh Kasus CROSS JOIN
Misalnya terdapat dua tabel:
Data Tabel mahasiswa

Data Tabel jurusan

Query CROSS JOIN
SELECT mahasiswa.nama, jurusan.jurusan
FROM mahasiswa
CROSS JOIN jurusan;Hasil Query CROSS JOIN
Berikut adalah hasil dari CROSS JOIN yang menghasilkan seluruh kombinasi data:
Data Tabel hasil cross join

Penjelasan Cara Kerja CROSS JOIN
CROSS JOIN tidak menggunakan kondisi seperti JOIN lainnya.
Semua data pada tabel pertama akan dikombinasikan dengan seluruh data pada tabel kedua.
Sebagai contoh:
- Andi dipasangkan dengan TI dan SI
- Budi dipasangkan dengan TI dan SI
Sehingga menghasilkan seluruh kombinasi yang mungkin.
Perbedaan SELF JOIN dan CROSS JOIN
Dalam belajar SQL database, penting untuk memahami perbedaan antara SELF JOIN dan CROSS JOIN karena keduanya digunakan untuk tujuan yang sangat berbeda.
SELF JOIN digunakan untuk menghubungkan data dalam tabel yang sama, biasanya untuk melihat relasi antar baris, seperti hubungan antar karyawan atau struktur hierarki. Sementara itu, CROSS JOIN digunakan untuk menggabungkan semua kemungkinan kombinasi data dari dua tabel, tanpa kondisi tertentu.
| Aspek | SELF JOIN | CROSS JOIN |
|---|---|---|
| Konsep | Menggabungkan tabel dengan dirinya sendiri | Menggabungkan semua kombinasi antar tabel |
| Tujuan | Mencari relasi dalam satu tabel | Menghasilkan kombinasi data (cartesian product) |
| Kondisi JOIN | Menggunakan kondisi (ON) | Tidak menggunakan kondisi |
| Jumlah hasil data | Bergantung pada relasi data | Bisa sangat banyak (perkalian jumlah baris) |
| Contoh penggunaan | Relasi atasan–bawahan, hierarki organisasi | Kombinasi produk & kategori, variasi data |
Studi Kasus SELF JOIN (Relasi Mata Pelajaran)
Dalam sebuah sistem sekolah, terdapat data mata pelajaran yang memiliki keterkaitan dengan mata pelajaran lain, misalnya sebagai prasyarat (contoh: harus belajar dasar sebelum lanjut).
Relasi ini disimpan dalam satu tabel menggunakan kolom prasyarat_id.
Struktur Tabel Mata Pelajaran
Data Tabel mata_pelajaran

Penjelasan Data
- Matematika Lanjut memiliki prasyarat Matematika Dasar
- Fisika Lanjut memiliki prasyarat Fisika Dasar
- Mata pelajaran dasar tidak memiliki prasyarat
Query SELF JOIN
SELECT
m.nama_mapel AS mata_pelajaran,
p.nama_mapel AS prasyarat
FROM mata_pelajaran m
LEFT JOIN mata_pelajaran p
ON m.prasyarat_id = p.id;Hasil Query
Data Tabel hasil self join

Penjelasan:
- Tabel digunakan dua kali (alias m dan p)
- Relasi dilakukan dari prasyarat_id ke id
- LEFT JOIN digunakan agar data tanpa prasyarat tetap ditampilkan
Studi Kasus CROSS JOIN (Jadwal Hari dan Mata Pelajaran)
Dalam sebuah sistem sekolah, diperlukan pembuatan jadwal pelajaran berdasarkan kombinasi hari dan mata pelajaran.
Untuk menghasilkan seluruh kemungkinan jadwal, dapat digunakan CROSS JOIN.
Struktur Tabel Hari
Data Tabel hari

Struktur Tabel Mata Pelajaran
Data Tabel mata_pelajaran

Query CROSS JOIN
SELECT hari.nama_hari, mata_pelajaran_jadwal.nama_mapel
FROM hari
CROSS JOIN mata_pelajaran_jadwal;Hasil Query
Data Tabel hasil cross join

Penjelasan:
- CROSS JOIN menggabungkan setiap baris dari tabel pertama dengan seluruh baris pada tabel kedua
- Tidak menggunakan kondisi JOIN
- Jumlah hasil merupakan perkalian jumlah baris dari kedua tabel
Contoh:
- 2 hari × 2 mata pelajaran = 4 kombinasi
Kelebihan dan Kekurangan
SELF JOIN
Kelebihan:
- Fleksibel untuk menangani relasi dalam satu tabel, tanpa perlu membuat tabel tambahan
- Sangat cocok untuk data dengan struktur hierarki, seperti relasi atasan–bawahan atau kategori bertingkat
Kekurangan:
- Membutuhkan penggunaan alias yang tepat agar query tidak membingungkan
- Lebih kompleks untuk dipahami, terutama bagi pemula
Kapan sebaiknya digunakan?
Gunakan SELF JOIN ketika Anda ingin menganalisis hubungan antar data dalam satu tabel, misalnya mencari siapa atasan dari setiap karyawan atau melihat relasi antar user.
CROSS JOIN
Kelebihan:
- Mudah digunakan karena tidak memerlukan kondisi JOIN
- Efektif untuk menghasilkan semua kemungkinan kombinasi data
Kekurangan:
- Menghasilkan jumlah data yang sangat besar (cartesian product)
- Berpotensi memperlambat query jika digunakan pada tabel besar
Kapan sebaiknya digunakan?
Gunakan CROSS JOIN saat Anda memang membutuhkan seluruh kombinasi data, misalnya untuk membuat variasi produk (warna × ukuran) atau skenario pengujian data.
Kapan sebaiknya dihindari?
Hindari jika tidak benar-benar diperlukan, terutama pada tabel dengan jumlah data besar, karena dapat membebani database dan memperlambat performa.
Tips Menggunakan JOIN
Agar penggunaan JOIN tetap optimal, beberapa hal berikut dapat diperhatikan:
- Gunakan alias agar query lebih mudah dipahami
- Hindari penggunaan CROSS JOIN pada tabel besar tanpa filter
- Pastikan relasi data sudah sesuai
- Gunakan EXPLAIN untuk analisis query
Penutup
Dalam proses belajar SQL database, memahami SELF JOIN dan CROSS JOIN akan membantu Anda mengolah data dengan lebih tepat sesuai kebutuhan. SELF JOIN digunakan ketika Anda ingin melihat relasi antar data dalam satu tabel, sementara CROSS JOIN digunakan untuk menghasilkan seluruh kombinasi data dari beberapa tabel.
Keduanya memiliki fungsi yang berbeda, namun sama-sama penting dalam kondisi tertentu. Dengan memahami kapan dan bagaimana menggunakan kedua teknik ini, Anda bisa membuat query yang lebih efisien dan relevan.
Demikian tutorial belajar SQL database bagian 11 tentang fungsi JOIN lanjutan. Jangan lewatkan seri belajar SQL database lainnya dari Rumahweb untuk terus meningkatkan pemahaman Anda. Semoga bermanfaat!


