Categories: MySQL

MySQL Query Left JOIN dan inner JOIN yang penting

Bismillaahirrohmaanirrohiim…

Join antar tabel di MySQL seringkali digunakan karena dapat menghemat query daripada query satu persatu ke banyak tabel sekaligus.

MySQL Query Left JOIN dengan dua kondisi atau lebih

select tabel1.*, tabel2.id, tabel2.nama, tabel2.kode 
  from tabel1 
  left join tabel2 on (tabel1.id=tabel2.id and tabel1.nama=tabel2.nama AND tabel2.status=1)
  where tabel1.id='56'
  AND tabel1.nama='nama'
  AND tabel1.status=1
  order by tabel2.nama ASC LIMIT 0,10;

MySQL query dengan dua left join yang melibatkan tiga tabel

select 
    tabel1.*,     
    tabel2.id, tabel2.nama,tabel2.kode, 
    tabel3.id_other, tabel3.nama_lain, tabel3.kode_lain
    
  from tabel1 
     left join tabel2 on (tabel1.id=tabel2.id and tabel1.nama=tabel2.nama and...)
     left join tabel3 on (tabel1.id_other=tabel3.id_other and...)
  where 
        tabel1.id='56'
     AND tabel1.nama='nama'
     AND tabel1.status=1
  order by tabel2.kode ASC LIMIT 0,10;

pastikan kondisi setelah on adalah unik di tabel2 dan di tabel3, jika tidak unik maka akan menghasilkan banyak rows karena setiap data tabel1.id_other=tabel3.id_other akan ditampilkan.

jika memang tidak bisa unik, solusinya adalah menggunakan klausa group by id, jadi hasilnya spt di bawah ini

select 
    tabel1.*,     
    tabel2.id, tabel2.nama,tabel2.kode, 
    tabel3.id_other, tabel3.nama_lain, tabel3.kode_lain
    
  from tabel1 
     left join tabel2 on (tabel1.id=tabel2.id and tabel1.nama=tabel2.nama)
     left join tabel3 on (tabel1.id_other=tabel3.id_other)
  where 
        tabel1.id='56'
     AND tabel1.nama='nama'
     AND tabel1.status=1
  group by tabel1.id
  order by tabel2.kode ASC LIMIT 0,10;

MySQL left join dua tabel menggunakan group by dan order by

Keterangannya ada di sini

select tb1.*, tb2.totdata
from t_satu tb1
left join (SELECT data_id, count(data_id) as totdata FROM t_dua group by data_id order by totdata desc LIMIT 8) tb2 on tb1.data_id = tb2.data_id
order by tb2.totdata desc limit 8

Menggunakan filter select pada left join dan kondisi query

select 
  tabel1.tabel1_id, tabel1.tabel1_kode, tabel1.tabel1_nama, tabel2.*
from tabel1
left join (select * from tabel2 where tabel2_not_unik_id=1) tabel2 on (tabel1.tabel1_id=tabel2.tabel1_id_sama)
  
    where tabel1_id=11
    and tabel1_kode='abc'
    and deleted=0
order by tabel1.tabel1_nama ASC

Halaman ini akan terus diupdate jika ada pembaruan tentang query mysql inner join dan left join.

Terimakasih

Bagikan
rasupe

Recent Posts

Cara ngoding di laptop lokal, otomatis terupdate ke server.

Bismillaahirrohmaanirrohiim... Berikut ini adalah cara untuk memudahkan programmer dalam singkronisasi kode program dari laptop ke…

1 month ago

Setting vhost nginx untuk domain saas

Bismillaahirrohmaanirrohiim... jika kita ingin mengarahkan semua domain apapun keserver utama, dengan menangkap hostname agar menjadi…

1 month ago

set user dan email saat push ke github

Bismillaahirrohmaanirrohiim... Untuk push data ke github, kadangkala kita lupa untuk set user dan email, berikut…

2 months ago

Cara install mitm di windows

Bismillaahirrohmaanirrohiim... mitm adalah tools yang bisa menggantikan fiddler, untuk memantau trafik internet, dari website, aplikasi,…

2 months ago

masalah cors pada nginx method options

Bismillaahirrohmaanirrohiim... berikut ini tambahan kode pada vhost nginx untuk memperbolehkan cors method options {{settings}} location…

2 months ago

cara reset google authenticator pada cyberpanel

Bismillaahirrohmaanirrohiim... Jika kita membuka login halaman cyberpanel dan tahu tahu muncul inputan kode authenticator, berikut…

2 months ago