Fungsi inner join pada mysql

Menu Utama

Konsep Umum

    • Tipe / Jenis JOIN TABLE pada MySQL 5.0

Lain-lain

Business Intelligence (BI)

Training BI & SQL

Fungsi inner join pada mysql

Situs Terkait

Tipe / Jenis JOIN TABLE pada MySQL 5.0

Jika Anda telah memahami fungsi join pada database relasional untuk menghubungkan berbagai table, maka artikel berikut akan menjelaskan dan menunjukkan contoh penggunaan variasi join pada MySQL versi 5.0. JOIN sendiri merupakan konstruksi bahasa yang tidak bisa berdiri sendiri, biasanya berupa klausa pada bagian referensi table pada SELECT, UPDATE atau DELETE statement.

Tipe-tipe JOIN yang akan dibahas adalah :

  • INNER JOIN
  • CROSS JOIN
  • OUTER JOIN
  • STRAIGHT JOIN

Tiga table yang akan kita gunakan dari database tersebut adalah ms_cabang, ms_kota dan ms_propinsi dengan relasi terlihat seperti pada gambar berikut.

Fungsi inner join pada mysql

Keterangan : Relasi antar table ms_cabang, ms_kota dan ms_propinsi

INNER JOIN

INNER JOIN adalah tipe join yang akan kita bahas pertama. Tipe join ini akan mengambil semua row dari table asal dan table tujuan dengan kondisi nilai key yang terkait saja - jika ada, dan  jika tidak maka row tersebut tidak akan muncul. 

Kalau tidak terdapat kondisi key terkait antar table, maka semua row dari kedua table dikombinasikan.

Syntax dari INNER JOIN adalah sebagai berikut :

table_reference [INNER] JOIN table_factor [join_condition]

Terlihat bahwa keyword INNER boleh digunakan secara eksplisit atau tidak. Jika tidak digunakan maka konstruksi JOIN tanpa keyword lain dianggap sebagai INNER JOIN.


INNER JOIN Antar Table dengan Kondisi ("ms_cabang" dan "ms_kota" dengan key "kode_kota")

SELECT * FROM ms_cabang INNER JOIN ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kota

Hasil terlihat seperti gambar berikut ini. Disini table sumber adalah ms_cabang (left) mencari referensi row lain dari table ms_kota (right) dengan kondisi nilai kode_kota diantara kedua table tersebut sama. Kondisi ini menggunakan keyword ON

Dengan panduan gambar, kita lihat bahwa tiap row dari ms_cabang akan dicari padanan row-nya di ms_kota :

  • untuk row pertama kita memiliki kode_kota dengan nilai "KOTA-003", ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Lhokseumawe" adalah padanannya.
  • untuk row kedua kita memiliki kode_kota dengan nilai "KOTA-083", ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Bau-bau" adalah padanannya.
  • demikian seterusnya.

Fungsi inner join pada mysql


Sekarang mari kita coba hapus referensi untuk "Lhokseumawe" dari table ms_kota :

DELETE FROM ms_kota WHERE nama_kota = 'Lhokseumawe';

Setelah itu coba jalankan kembali perintah JOIN di atas, Anda akan mendapatkan hasil JOIN tanpa referensi row "Lhokseumawe". Jadi INNER JOIN dengan kondisi mengharuskan row dari tiap table memiliki nilai yang sama untuk column referensinya (dalam hal ini kode_kota).

Fungsi inner join pada mysql


Kembalikan lagi row referensi yang kita hapus tadi dengan perintah INSERT berikut ini :

INSERT INTO `ms_kota` VALUES ('KOTA-003','Lhokseumawe','P33')

INNER JOIN Antar Table Tanpa Kondisi ("ms_cabang" dengan "ms_kota")

SELECT * FROM ms_cabang INNER JOIN ms_kota

Hasilnya adalah untuk tiap row dari ms_cabang akan dikombinasikan dengan semua row dari ms_kota - contoh hasilnya terlihat seperti pada gambar di bawah ini.

Fungsi inner join pada mysql

INNER JOIN antar table "ms_cabang", "ms_kota" dan "ms_propinsi"

SELECT ms_cabang.nama_cabang, 

       ms_kota.nama_kota, 

       ms_propinsi.nama_propinsi 

FROM ms_cabang 

INNER JOIN ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kota

INNER JOIN ms_propinsi ON ms_kota.kode_propinsi = ms_propinsi.kode_propinsi

Hasil eksekusi terlihat seperti gambar berikut. Dengan penggabungan ketiga table ini sekarang kita dapatkan setiap cabang memiliki informasi nama kota dan nama propinsi dimana cabang tersebut berada.

Fungsi inner join pada mysql


Implisit INNER JOIN dengan Koma

INNER JOIN antar table secara implisit dapat menggunakan daftar table yang dipisah dengan tanda koma (,). Pengkondisian menggunakan klausa where.

SELECT ms_cabang.nama_cabang,

       ms_kota.nama_kota    ,

       ms_propinsi.nama_propinsi

FROM   ms_cabang

       , ms_kota

       , ms_propinsi

       WHERE 

       ms_cabang.kode_kota = ms_kota.kode_kota

       AND 

       ms_kota.kode_propinsi = ms_propinsi.kode_propinsi

CROSS JOIN

CROSS JOIN identik dengan INNER JOIN pada MySQL 5.0. Pembahasannya sama dengan INNER JOIN sehingga tidak diulangi lagi disini.

Contoh Penggunaan :

SELECT ms_cabang.nama_cabang,
ms_kota.nama_kota,
ms_propinsi.nama_propinsi
FROM

     ms_cabang
CROSS JOIN 

     ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kota
CROSS JOIN 

     ms_propinsi ON ms_kota.kode_propinsi = ms_propinsi.kode_propinsi 

OUTER JOIN

OUTER JOIN merupakan tipe join yang mencari referensi data dari suatu table sumber ke table lain dengan tidak menghilangkan data sumber apabila referensi tidak diketemukan.

Untuk menggunakan tipe OUTER JOIN maka perlu memperhatikan beberapa hal berikut :

  • perlu dibedakan antara table sumber dan table referensi, ini ditentukan dengan cara menspesifikasikan kedudukan table sumber apakah di kiri (LEFT) atau di kanan (RIGHT).
  • jika tidak ada data dari table referensi yang cocok dengan kondisi join maka hanya data dari table sumber yang ditampilkan tetapi kolom-kolom table referensi akan berisi null.

Contoh Penggunaan :

  • Hapus data master "Lhokseumawe" dari table ms_kota

    DELETE FROM ms_kota WHERE nama_kota = 'Lhokseumawe'


  • Lakukan join seperti perintah berikut ini, dan perhatikan hasilnya seperti pada gambar.

    SELECT ms_cabang.*,
           ms_kota.nama_kota
    FROM ms_cabang
    LEFT OUTER JOIN ms_kota
         ON ms_cabang.kode_kota = ms_kota.kode_kota

    Fungsi inner join pada mysql


  • Tambahkan kembali data "Lhokseumawe" ke table ms_kota

    INSERT INTO ms_kota(kode_kota, nama_kota, kode_propinsi)
    VALUES ('KOTA-003', 'Lhokseumawe', 'P33');


  • Sekarang coba ganti syntax pada query di atas dari "LEFT" menjadi "RIGHT" dan lihat hasil eksekusinya. Tentunya dari hasil tersebut Anda sudah dapat mengambil kesimpulan perbedaan dari kedua konstruksi tersebut.

STRAIGHT_JOIN

STRAIGHT_JOIN merupakan pengganti keyword JOIN pada MySQL yang digunakan untuk "memaksa" proses join table dari kiri (LEFT) ke kanan (RIGHT).

Contoh Penggunaan :

SELECT ms_cabang.*,

       ms_kota.nama_kota

FROM ms_cabang

STRAIGHT_JOIN ms_kota

     ON ms_cabang.kode_kota = ms_kota.kode_kota

Selesai

Mungkin Anda tertarik mengambil kursus data science online dari Universitas Multimedia Nusantara (group Kompas Gramedia)?

Klik gambar berikut.

Fungsi inner join pada mysql


Apa fungsi dari inner join?

Fungsi dari Inner Join adalah menampilkan suatu data dengan cara menghubungkan dua tabel atau lebih dalam satu perintah tersebut. Data yang akan ditampilkan pada perintah Inner Join hanyalah data yang memiliki pasangan saja.

Apa fungsi dari join di dalam query MySQL?

Join adalah penggabungan table yang dilakukan melalui kolom / key tertentu yang memiliki nilai terkait untuk mendapatkan satu set data dengan informasi lengkap. Lengkap disini artinya kolom data didapatkan dari kolom-kolom hasil join antar table tersebut.

Apa fungsi dari join?

Menggabungkan elemen dari array satu atau beberapa dimensi menggunakan pembatas yang ditentukan.

Apa fungsi LEFT join?

3. Fungsi LEFT JOIN LEFT JOIN menghasilkan nilai berdasarkan table kiri (left table) dan nilai yang sama di table kanan (right table). Jika table kanan tidak sama nilainya dengan table kiri, maka akan diisi nilai NULL pada table kanan.