Perbedaan Where dan On Pada Left Join SQL


Biasanya aplikasi Android yang berhubungan dengan data, misal menampilkan atau menambahkan / mengedit data, pasti menggunakan SQL dalam pemrosesan data tersebut. SQL nya dapat ditempatkan di sisi aplikasi Androidnya sendiri atau pun di sisi server.

Oleh karena SQL sangat dibutuhkan dalam pengembangan aplikasi Android maka kali ini saya akan membahas sedikit mengenai perbedaan Where dan On pada left join SQL. Langsung ke contoh untuk lebih jelasnya.

Misal kita memiliki dua buah tabel yaitu Table_A & Table_B seperti di bawah.

Table_A:

date_sell customer_number outlet_number
2016-07-14 628170000001 628189998887
2016-07-15 628170000002 628189998887
2016-07-15 628170000003 628189998887
2016-07-15 628170000004 628189998887
2016-07-15 628170000005 628189998887

Table_B:

date_trn customer_number
2016-07-23 628170000001
2016-07-23 628170000002
2016-07-23 628170000003
2016-07-23 628189998887
2016-07-23 628170000005

Jika kita menempatkan date_sell di bagian On saat melakukan left join seperti berikut :

select a.date_sell, a.customer_number, a.outlet_number, b.date_trn from table_a a left outer join table_b b on a.customer_number=b.customer_number and a.date_sell=’2016-07-14′

Maka hasilnya adalah seperti di bawah:

date_sell customer_number outlet_number date_trn
2016-07-14 628170000001 628189998887 2016-07-23
2016-07-15 628170000002 628189998887 2016-07-23
2016-07-15 628170000003 628189998887 2016-07-23
2016-07-15 628170000004 628189998887 2016-07-23
2016-07-15 628170000005 628189998887 2016-07-23

Tentu saja jika kita sebenarnya ingin menampilkan hanya date_sell=’2016-07-14′ hasilnya akan salah.

Akan berbeda hasilnya jika kita menempatkan date_sell di sisi where seperti di bawah :

select a.date_sell, a.customer_number, a.outlet_number, b.date_trn from table_a a left outer join table_b b on a.customer_number=b.customer_number where a.date_sell=’2016-07-14′

Maka hasilnya sesuai dengan yang diharapkan seperti di bawah:

date_sell customer_number outlet_number date_trn
2016-07-14 628170000001 628189998887 2016-07-23

Leave a Reply

Your email address will not be published. Required fields are marked *