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