SQL JOIN with Date Data: JOINs Antara Dua Tabel yang Memiliki Tanggal dan Jumlah ID Unik yang Berbeda

Inilah yang harus kamu lakukan ketika ingin menggabungkan dua tabel yang memiliki tanggal dan jumlah unik id yang berbeda

Riza Purnaramadhan
4 min readFeb 20, 2022
Photo by Towfiqu barbhuiya on Unsplash

Terkadang data yang disitu terdapat data tanggal kita membutuhkan tenaga lebih untuk meananganinya dan juga harus cermat, karena jika tidak cermat kita bisa membuat kesalahan besar. Well, pada pembahasan kali ini sebenarnya bukan pembahasan yang berat, hanya saja saya ingin memberitahu bahwa kita tidak boleh sembarangan dalam menggunakan perintah JOIN pada SQL yang disitu terdapat data tanggal, kita harus memahami data kita terlebih dahulu seperti apa dan apa tujuannya.

Table of Contents

  1. Contoh Kasus
  2. Menguraikan Masalah
  3. Penyelesaian

Contoh Kasus

Pada contoh kasus kali katakanlah kita mempunyai 2 tabel yang berisi data penjualan sayuran di sebuah supermarket, saya namakan tersebut tabel 1 dan tabel 2.

Tabel 1 isinya seperti berikut:

Table 1

Pada tabel 1 ini berisi catatan produk-produk yang dibeli oleh user beserta info tanggalnya.

Tabel 2 isinya seperti berikut:

Table 2

Pada tabel 2 berisi catatan quantity yang dibeli oleh user beserta info tanggalnya.

Kedua tabel diatas saling berhubungan, dan kolom referensinya adalah kolom user_id .

Sekarang misalnya atasan kalian meminta kepada kalian untuk mengetahui informasi penjualan produk selama ini dimana informasinya memuat kolom user_id , date , product , dan qty . Bagaimana cara menjawabnya ? mari kita uraikan masalahnya dibagian selanjutnya.

Problem

Sebelum kita menjawabnya, mari kita uraikan masalah yang sebenarnya kita harus cermat disitu:

  1. Jumlah per user_iddari kedua tabel berbeda

Jika kita cermati ada perbedaan banyaknya catatan per user_id dari kedua tabel, yaitu user_id 2 & 3

2. Tanggal transaksi

Tanggal transaksi juga mempunyai perbedaan disebabkan perbedaan yang ada di poin 1

Jika kita menemui 2 masalah diatas dan saat menggabungkan 2 tabel dan key kolomnya hanyauser_id maka akan mengembalikan hasil yang aneh, berikut contohnya:

Pada contoh kasus kali ini saya menggunakan LEFT JOIN untuk menggabungkan 2 tabel. LEFT JOIN singkatnya adalah mengembalikan seluruh records yang berada di tabel kiri (tabel 1) dan records yang cocok dari tabel kanan (tabel 2).

SELECT t1.user_id, t1.date, t1.product, t2.qty
FROM table_1 AS t1
LEFT JOIN table_2 as t2
ON t1.user_id = t2.user_id

akan mengembalikan hasil seperti berikut:

Dari hasil diatas dapat kita lihat bahwa pada user_id 2 & 3 mengembalikan hasil yang aneh, jika key kolomnya hanya berdasarkan user_id maka pada dasarnya ia akan mengembalikan nilai yang sama dengan nilai dari tabel yang disitu terdapat nilainnya (baik itu dari tabel kanan maupun kiri), berikut adalah contoh masalah yang terjadi (perhatikan tanda merah, hijau, dan biru pada gambar di bawah ini):

Tanda merah menandakan nilai yang tidak cocok dari tabel manapun, oleh karena itu ia mengembalikan nilai yang aneh dan pada dasarnya mengembalikan nilai berdasarkan referensi user_id urutan pertama (tanda warna hijau). Sedangkan tanda warna biru adalah nilai asli yang berada di masing-masing tabel asal. Pertanyaannya sekarang adalah bagaimana menyelesaikan masalah tersebut? mari kita bahas dibagian selanjutnya.

Penyelesaian

Setelah kita menguraikan masalah di atas mari kita pecahkan masalah tersebut. Pada dasarnya jika kita menemui masalah di atas, yaitu ketika ingin menggabungkan dua tabel yang memiliki tanggal dan jumlah id yang berbeda, maka ketika menggunakan key kolom tidak cukup kita hanya menggunakan berdasarkan id saja ( user_id ), tetapi kita juga harus menambahkan tanggalnya ( date ), agar sama-sama cocok ketika dijoinkan, berikut query penyelesainnya:

SELECT t1.user_id, t1.date, t1.product, t2.qty 
FROM table_1 as t1
LEFT JOIN table_2 as t2
ON t1.user_id = t2.user_id and t1.date = t2.date

akan mengembalikan hasil seperti berikut:

Dari hasil diatas dapat kita lihat bahwa kolom-kolom yang ada sudah menyesuaikan dengan benar berdasarkan user_id dan date serta perintah LEFT JOIN. Hasil [NULL] yang berada di kolom qty disebabkan karena tidak ada kecocokan record dari tabel kanan.

Kesimpulan

So far kita telah belajar tentang bagaimana menggabungkan dua tabel yang memiliki tanggal dan jumlah id unik yang berbeda. Kita tidak boleh sembarangan dalam menggunakan perintah JOIN pada SQL yang disitu terdapat data tanggal, kita harus memahami data kita terlebih dahulu seperti apa dan apa tujuannya. Terimakasih, semoga bermanfaat.

--

--