Tutorial PostgreSQL - JOIN

     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

  1. 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.

  2. 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.linkedin
    FROM users as u
    LEFT JOIN social_media_accounts sma
    ON 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.

  3. 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.

  4. 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.


    Menampilkan semua data yang ada pada tabel products dan tabel units.

    SELECT u.id, u.name, p.name, p.price
    FROM products as p
    FULL JOIN units as u
    ON u.id=p.unit_id; 
  5. CROSS JOIN
    JOIN ini biasanya digunakan untuk mendapatkan hasil kombinasi (Cartesian Product) dari kedua tabel.



    SELECT u.id, u.name, p.name, p.price
    FROM products as p
    CROSS JOIN units as u;

  6. 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.

    JOIN merupakan salah satu fitur utama yang dapat menggabungkan data dari beberapa tabel, dengan memahami jenis-jenis JOIN, diharapkan temen-temen dapat mengelola data relasional dengan lebih baik.

    Mungkin itu saja yang bisa kita pelajari pada materi kali ini. Semoga materinya dapat membantu teman-teman dalam memahami Perintah JOIN dan Jenis-jenis nya. Jika teman-teman memiliki pertanyaan atau ingin berbagi pengalaman, silakan ketikkan pada kolom komentar di bawah.

Sedikit Tentang Saya :

    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

Lebih baru Lebih lama