PENDAHULUAN
Query adalah permintaan data ke 'server database'. Dengan menggunakan syntak JET-SQL, kita selayaknya mengajukan permintaan ber-bahasa inggris kepada MS Access, untuk menyajikan informasi dari data-data yang telah kita kumpulkan dalam database-nya.
Dalam MS Access, pembuatan query sangat dimudahkan dengan memanfaatkan tool Query By Editor (QBE), yang sangat efisien dan mengurangi proses mengetik teks di dalamnya. Cukup klik dan seret, informasi yang diinginkan sudah bisa tersaji untuk kebutuhan laporan dan analisa.
PERSIAPAN
Sebagai RDBMS, database access terdiri dari kumpulan tabel yang saling berelasi. Sebagai contoh dalam artikel ini kita ambil model sederhana transaksi penjualan buah.
Dalam bentuk normalnya, relasi tabelnya bisa digambarkan sebagai:
Dokumen penjualan dinormalkan dalam bentuk header-detail.
Dalam tabel header cukup disimpan nomor dokumen dan tanggalnya (doc_no dan doc_date), serta dijual kepada customer tertentu (cust_id).
Customer berelasi dengan master customer yang berisi kode dan nama customer (id dan cust_name).
Detail buah-buahan yang dibeli di setiap dokumen penjualan disimpan dalam tabel detail penjualan, berisi relasi dengan header (id_jual), buah yang dibeli beserta jumlah dan harganya (id_barang, qty, dan price).
Buah berelasi dengan master barang yang berisi kode dan nama buahnya (id, namabarang).
SKENARIO
Sekarang mari kita berkelana dengan berbagai pengajuan pertanyaan yang akan dijawab melalui query ke database tersebut.
1. keluarkan report penjualan keseluruhan!
2. berapa total penjualan untuk setiap customer?
3. buah apa yang tidak laku ?
4. customer mana yang belum membeli buah ?
INNER JOIN
Pertanyaan pertama meminta kita mengeluarkan report total penjualan. Ini dengan mudah dilakukan dengan membentuk relasi dari ke-empat tabel tersebut yang telah melakukan transaksi. Klik dan seret field membentuk query seperti berikut:
dalam syntak JET-SQL nya akan terbentuk query text sebagai berikut:
SELECT
t_jual_h.doc_no,
t_jual_h.doc_date,
t_jual_h.cust_id,
t_jual_d.id_barang,
t_jual_d.qty,
t_jual_d.price,
[qty]*[price] AS amount
FROM t_jual_h
INNER JOIN t_jual_d ON t_jual_h.id = t_jual_d.id_jual;
t_jual_h.doc_no,
t_jual_h.doc_date,
t_jual_h.cust_id,
t_jual_d.id_barang,
t_jual_d.qty,
t_jual_d.price,
[qty]*[price] AS amount
FROM t_jual_h
INNER JOIN t_jual_d ON t_jual_h.id = t_jual_d.id_jual;
Sangat mudah untuk mengartikan perintah ini. Tolong berikan daftar nomor dokumen, tanggal, pembeli, buah, berapa banyak seharga berapa, jumlah totalnya berapa. Ambil data tersebut dari header pembelian digabungkan dengan detail nya.
Hasilnya bisa dilihat di video singkat diatas.
AGREGATE QUERY
Pertanyaan kedua, hanya ingin mengetahui total pembelian setiap customer. Kita bisa menggunakan group query / agregasi query dengan memilih hanya field yang dibutuhkan dan nilai yang akan di summary kan.
Dengan demikian query akan menjadi:
Kita membentuk summary query, yang SQL nya sebagai berikut:
SELECT
t_jual_h.cust_id,
Sum([qty]*[price]) AS amount
FROM t_jual_h
INNER JOIN t_jual_d ON t_jual_h.id = t_jual_d.id_jual
GROUP BY t_jual_h.cust_id;
t_jual_h.cust_id,
Sum([qty]*[price]) AS amount
FROM t_jual_h
INNER JOIN t_jual_d ON t_jual_h.id = t_jual_d.id_jual
GROUP BY t_jual_h.cust_id;
Membaca instruksi query ini: Tolong berikan data customer dan total pembeliannya. Kelompokkan berdasarkan customer, dan summarykan total pembeliannya.
Hasilnya bisa dilihat di video singkat di atas.
Bersambung ....
(-Aksan Kurdin-)