Kita akan menggunakan database sakila Seperti yang telah dijelaskan pada post sebelumnya. Pada latihan pertama kita akan mencoba menggunakan penggunaan aplikasi SQL pada aktivitas operasi bisnis sehari-hari (BaU) di perusahaan rental sakila.
Asumsi kan bahwa hari ini terdapat pesanan baru untuk dua buah film yang berjudul "Hunchback Impossible" dan "Academy Dinosaur". Anda diminta oleh bagian staf operasional untuk:
- Berapa banyak salinan film "Hunchback Impossible" yang ada di sistem inventaris ?
Jawaban
Soal pertama meminta kita untuk menyediakan jumlah Salinan (copy) yang tersedia dari film Hunchback Impossible yang ada di sistem inventaris. Kita membutuhkan dua set data dari dua tabel yang berbeda, yaitu 'title' dari tabel 'film' , dan data set 'film_id' dari table 'film_id'
Pada Langkah awal kita tidak dapat melakukan querying hanya berdasarkan imajinasi yang kita dapatkan dari ER Diagram. kita harus memastikan setiap target (Kolom maupun Tabel) yang akan kita jadikan object untuk querying dapat kita pahami terlebih dahulu. dengan demikian kita dapat mengetahui tipe data, primary-key, foreign-key, dsb yang akan kita gunakan untuk memutuskan dalam proses querying.
Disini kita akan melihat tabel 'film' dan 'film_id' terlebih dahulu.
dengan hasil sebagai berikut :
kita mendapatkan informasi mengenai film_id dari film Hunchback Impossible yaitu '439'. Informasi ini penting karena 'film_id' merupakan primary key dari tabel 'film'. Dari sini anda dapat menentukan klausa apa digunakan untuk mem-filter record ('WHERE' atau 'HAVING') pada query anda. Apakah anda akan mem-filter record menggunakan 'film_id' (439) , atau anda akan menggunakan 'title' (Hunchback Impossible).
Dari output diatas kita juga melihat bahwa hanya ada 1 row data untuk film berjudul "Hunchback Impossible". Ini akan menjadi masalah baru jika kita melihat output dengan row yang lebih dari 1. Artinya terdapat lebih dari 1 record dengan film berjudul Hunchback Impossible. Hal ini dapat disebabkan kesalahan input data sebelumnya di database (ter input lebih dari satu kali), kesalahan input title film (misal : Hunchback Impossible Part 2), dan masih banyak lagi. Ini mengapa sangat penting untuk tidak eksekusi jawaban secara langsung, namun me-review terlebih dahulu setiap target object yang akan kita gunakan, dan mencari kemungkinan trans misinya. Jika terdapat dua rows (record) pada output, akan lebih baik untuk kita menggunakan 'film-id' sebagai filter record selanjutnya, karena 'film_id' merupakan primary-key (unique atau hanya satu untuk setiap object). Sejak kita hanya menemukan 1 row disini kita dapat melanjutkan untuk menggunakan 'title' (Hunchback Impossible) sebagai filter record di query kita selanjutnya.
Selanjutnya adalah melihat table inventory, sbb.
dari gambar diatas kita menemukan bahwa tidak ada kolom 'title' pada tabel 'inventory'. Dari sini kita mengetahui bahwa variable penghubung antara tabel 'film' (tabel sebelumnya) dan tabel inventory adalah 'film_id'. Sehingga 'film_id' akan kita gunakan sebagai variable relasi dalam klausa "JOIN - USING"
Sekarang mari kita cek kembali menggunakan film_id no 439 milik film Hunchback Impossible (yang kita dapat dari querying sebelumnya).
dari query yang baru kita mengetahui bahwa ada 6 inventory (6 'inventory_id') untuk film Hunchback Impossible (film_id = 439). Kolom 'inventory_id' ini yang nanti akan kita gunakan dalam klausa aggregate 'COUNT( )' untuk menghitung dan mengembalikan hasil nilainya ke record (jumlah record / rows).
Dari sini kita sudah mendapatkan jawaban dari pertanyaan tersebut. Kita mengetahui bahwa terdapat 6 salinan (copy) film Hunchback Impossible yang ada di sistem inventaris kita. Namun demikian untuk menciptakan report yang baik kepada staff operasional, kita akan membuat output table yang lebih baik dengan query yang lebih ter struktur dari temuan-temuan diatas:
- Menggunakan "Hunchback Impossible" (title) sebagai filter record "WHERE", bukan ''439" (film_id)
- "film_id" akan digunakan sebagai variable relasi dalam klausa "JOIN - USING"
- "inventory_id" akan digunakan dalam klausa aggregate "COUNT( )"
Dengan demikian query yang lengkap akan menjadi seperti berikut:
dengan hasil table sebagai berikut:
Dari proses querying tersebut kita dapat melaporkan bahwa terdapat 6 buah salinan (copy) film 'Hunchback Impossible' yang ada di dalam sistem inventaris.
Komentar
Posting Komentar