Pada materi kali ini, kita akan melanjutkan seri dari Tutorial PostgreSQL. Setelah sebelumnya kita membahas References, sekarang kita akan masuk ke materi tentang JOIN.
Pada materi sebelumnya, ketika menampilkan data, kita biasanya hanya menggunakan satu tabel. Contohnya saat kita menampilkan data users yang berelasi dengan tabel roles, ketika menampilkan data kita langsung menampilkan id-nya secara langsung.
Sekarang, gimana jika kita ingin menampilkan data users lengkap dengan nama perannya? Untuk mengatasi permasalahan ini, kita bisa menggunakan JOIN TABLE.
Apa Itu JOIN?
JOIN adalah perintah dalam SQL untuk menggabungkan data dari dua atau lebih tabel. Dengan menggunakan JOIN, kita bisa mendapatkan data yang tersebar di beberapa tabel dengan cara yang efisien dan terstruktur.
Dalam menggunakan JOIN, sebaiknya kita sudah menerapkan reference pada setiap tabel yang memiliki relasi. Tujuannya, supaya kita bisa menghindari inkonsisten data.
Jenis-Jenis JOIN
- INNER JOIN
Jenis JOIN ini digunakan ketika kita ingin menampilkan data yang memiliki kecocokan pada kedua tabel. Misalkan, kita akan menampilkan data users lengkap dengan perannya.
Tanpa menggunakan JOIN :
Menggunakan JOIN :
Tips : Jika tabelnya panjang, temen-temen bisa menggunakan alias supaya lebih mudah untuk dibaca.SELECT
u.id, u.name, u.email, r.name
FROM users as u
INNER JOIN roles as r
ON r.id=u.role_id;
Sesuai dengan penjelasan awal, kita juga bisa menggunakan JOIN untuk dua atau lebih tabel. Disini, kita akan coba untuk JOIN-kan kembali dengan tabel social_media_accounts.
Temen-temen bisa perhatikan pada tabel social_media_accounts, tidak terdapat data untuk user_id=6.
Data hasil JOIN :
Catatan : Perlu temen-temen ketahui, INNER JOIN hanya menampilkan data yang memiliki kecocokan pada semua tabel yang di JOIN-kan. Jadi, users dengan id=6 tidak ikut ditampilkan karena tidak memiliki kecocokan data pada social_media_accounts. - LEFT JOIN
Berbeda dengan INNER JOIN yang hanya menampilkan data ketika semua tabel memiliki kecocokan, LEFT JOIN tetap menampilkan data dari tabel kiri meskipun tidak ada kecocokan pada tabel kanan. Namun, kolom yang terkait akan diisi dengan nilai null.
Sebagai contoh, kita akan menampilkan users dengan semua sosial medianya.SELECT u.id, u.name, u.email, sma.instagram, sma.facebook, sma.linkedinFROM users as uLEFT JOIN social_media_accounts smaON u.id = sma.user_id;
Temen-temen bisa perhatikan, semua data pada tabel kiri (users) akan ditampilkan meskipun tidak ada data pada tabel kiri (social_media_accounts). Pada contoh diatas, users dengan id=6 tetap tampil dan sosial medianya diisi dengan nilai null. - RIGHT JOIN
JOIN ini kebalikan dari LEFT JOIN, dengan RIGHT JOIN semua data dari tabel kanan akan ditampilkan meskipun tidak ada kecocokan pada tabel kiri.
Sebagai contoh, kita akan menampilkan data units yang berelasi dengan products.
Tabel units :
Tabel products :
Data hasil JOIN :
Temen-temen bisa perhatikan, semua data units ditampilkan meskipun units tersebut tidak memiliki products. - FULL JOIN
JOIN ini akan menampilkan semua data dari kedua tabel, baik yang memiliki kecocokan maupun yang tidak.
Sebagai contoh, kita akan kembali menggunakan tabel products dan units, temen-temen bisa perhatikan pada data units di RIGHT JOIN terdapat dua data yang tidak memiliki nilai unit_id. Dan ada empat data units yang tidak memiliki products. - CROSS JOIN
JOIN ini biasanya digunakan untuk mendapatkan hasil kombinasi (Cartesian Product) dari kedua tabel. - SELF JOIN
JOIN dengan dirinya sendiri, sebagai contoh kita akan menambahkan attribut root_id pada tabel categories. Tujuannya, kita akan menjadikan kategori memiliki parent dan child (Sub Kategori).
Data categories :INSERT INTO categories (name, root_id) VALUES('Electronics', NULL),('Computers', 1),('Smartphones', 1),('Laptops', 2),('Desktops', 2),('Accessories', 1),('Headphones', 6),('Chargers', 6),('Home Appliances', NULL),('Kitchen', 9);
Data hasil JOIN :
Dengan menggunakan SELF JOIN, kita bisa menampilkan data dari tabel yang sama.
Sebagai seorang programmer profesional dengan pengalaman sekitar 4 tahun di bidang IT, saya siap membantu Anda dengan berbagai kebutuhan konsultasi.
Jangan ragu untuk menghubungi saya melalui WhatsApp.
Sampai jumpa di tutorial berikutnya!
Kontak Saya :
Email : ronisurya.115@gmail.com
WhatsApp : 081222821596
Website : Roni Surya
Materi Sebelumnya : Referensi
Materi Selanjutnya : Agregasi dan Pengelompokan Data