Traffine I/O

Bahasa Indonesia

2023-03-04

Self Join dalam SQL

Apa itu Self Join dalam SQL

Self join dalam SQL adalah technique yang kuat untuk mengelola dan menganalisis struktur data yang kompleks. Ini melibatkan penggabungan tabel dengan dirinya sendiri, menciptakan hubungan self-referential antara data. Ini memungkinkan analisis data yang lebih efisien dan komprehensif, terutama saat menangani data hierarkis.

Dalam self join, tabel diberi dua alias atau nama yang berbeda, yang digunakan untuk merujuk pada tabel yang sama. Alias pertama mewakili tabel asli, sementara alias kedua mewakili salinan dari tabel asli. Dengan menggabungkan kedua alias ini pada kolom yang sama, kita dapat membandingkan dan kontras data dalam tabel yang sama, seolah-olah itu adalah dua tabel terpisah.

Self join dapat dilakukan menggunakan berbagai jenis operasi join, termasuk inner join, left join, right join, dan full outer join. Setiap operasi ini memiliki karakteristik yang unik dan digunakan untuk tujuan yang berbeda.

Contoh Self Join dalam SQL

Berikut adalah contoh self join dalam SQL, bersama dengan tabel sampel, kode, dan output.

Manajemen Data Hirarkis

Pertimbangkan skenario di mana Anda memiliki tabel karyawan dengan kolom untuk ID karyawan, nama, dan ID manajer. Anda ingin membuat laporan yang menampilkan nama semua karyawan beserta nama manajer mereka masing-masing. Anda dapat menggunakan self join untuk menyelesaikan tugas ini.

Employee ID Employee Name Manager ID
1 John 2
2 Mary 3
3 Peter NULL
4 Sarah 3
5 Tom 2
sql
SELECT e.Employee_Name, m.Employee_Name as Manager_Name
FROM Employee e
INNER JOIN Employee m ON e.Manager_ID = m.Employee_ID

Output akan terlihat seperti ini:

Employee Name Manager Name
John Mary
Sarah Peter
Tom Mary
Mary Peter

Terlihat output ini menampilkan nama dari setiap pelanggan beserta nama pelanggan yang mereferensikan mereka.

Mencari Hubungan Antara Data

Misalkan Anda memiliki tabel pelanggan dengan kolom untuk ID pelanggan, nama, dan ID referensi. Anda ingin membuat laporan yang menampilkan nama semua pelanggan bersama dengan nama pelanggan yang merujuk mereka. Anda dapat menggunakan self join untuk menyelesaikan tugas ini.

Customer ID Customer Name Referral ID
1 John NULL
2 Mary 1
3 Peter 2
4 Sarah 3
5 Tom 1
sql
SELECT c.Customer_Name, r.Customer_Name as Referral_Name
FROM Customer c
LEFT JOIN Customer r ON c.Referral_ID = r.Customer_ID

Output akan terlihat seperti ini:

Customer Name Referral Name
John NULL
Mary John
Peter Mary
Sarah Peter
Tom John

Output ini menunjukkan nama setiap pelanggan bersama dengan nama pelanggan yang merujuk mereka, jika berlaku.

Menganalisis Struktur Data yang Kompleks

Misalkan Anda memiliki tabel penjualan dengan kolom untuk ID penjualan, tanggal, ID produk, dan ID pelanggan. Anda ingin membuat laporan yang menampilkan total jumlah penjualan untuk setiap pelanggan untuk setiap produk. Anda dapat menggunakan self join untuk menyelesaikan tugas ini.

Sales ID Date Product ID Customer ID
1 2022-01-01 1 1
2 2022-01-01 1 2
3 2022-01-01 2 1
4 2022-01-01 2 2
5 2022-01-01 1 3
sql
SELECT c.Customer_ID, p.Product_ID, COUNT(*) as Total_Sales
FROM Sales s
INNER JOIN Customer c ON s.Customer_ID = c.Customer_ID
INNER JOIN Sales s2 ON s.Product_ID = s2.Product_ID AND s.Customer_ID = s2.Customer_ID
INNER JOIN Product p ON s.Product_ID = p.Product_ID
GROUP BY c.Customer_ID, p.Product_ID

Output akan terlihat seperti ini:

Customer ID Product ID Total Sales
1 1 1
1 2 1
2 1 1
2 2 1
3 1 1

Output ini menunjukkan total jumlah penjualan untuk setiap pelanggan untuk setiap produk. Self join memungkinkan kita untuk membandingkan dan membedakan data dalam tabel yang sama, sehingga memudahkan untuk menganalisis struktur data yang kompleks.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!