Langsung ke konten utama

SQL (Practice 2)

 


    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:
  1. Apakah "Academy Dinosaur" tersedia untuk disewa dari Toko 1 ?

Jawaban

Pertama check 'film_id' dari Academy Dinosaur di table 'film'



'film_id' dari Academy Dinosaur = 1

Selanjutnya, check 'inventory_id' film Academy Dinosaur ('film_id' = 1) di store 1, 


'inventory_id' film Academy Dinosaur di store 1 = (1, 2, 3, 4

Kemudian, check aktivitas rental dari invetory_id no 1, 2, 3, dan 4 di tabel "rental" sbb:


Dari query diatas kita mengetahui bahwa invetory_id no 1 telah mengalami 3 kali proses per-putaran rental,  invetory_id no 2 telah mengalami 4 kali proses per-putaran rental, sementara invetory_id no 3 & 4 telah mengalami 2 kali proses per-putaran rental.

Kita harus mengingat bahwa pertanyaan dari soal ini adalah: Apakah Academy Dinosaur tersedia untuk disewa dari Toko 1 atau tidak ? Sehingga untuk mengetahui ketersediaan inventory no 1, 2, 3, dan 4 kita harus menggunakan analisis tanggal per-putaran dan membangun logika situasi baru sbb:

Suatu barang tidak tersedia di inventory jika inventory tersebut sedang di sewa (rent) ata berada ditangan customer, Jika :
  1. return_date Null / kosong / belum di input (inventory masih ditangan customer)
  2. return_date Tidak Null / sudah di input , namun berbentuk estimasi / tanggal lebih besar dari tanggal hari ini "CURDATE( )"(inventory masih ditangan customer)

Namun demikian logika situasi diatas tidak dapat kita eksekusi "jika return_date" (tabel "rental") belum kita filter dengan tanggal yang paling baru (up to date). Eksekusi query terakhir kita masih menghasilkan 12 baris (rows), kita hanya perlu mengambil satu tanggal yang paling up to date dari setiap inventory_id 1, 2, 3, dan 4.


 Kita dapat menggunakan klausa "MAX ( )" untuk object tanggal (return_date) atau rental_id (mencari rental_id terbesar untuk setiap inventory_id 1, 2, 3, dan 4). Keduanya akan menghasilkan output yang sama. dalam kasus ini kita akan menggunakan object tanggal (return_date) untuk klausa "MAX ( )" sbb:


sekarang kita memiliki return_date yang paling up to date dari setiap inventory_id 1, 2, 3, dan 4 dengan alias "last_return_update".
dari sini kita sudah menemukan jawaban secara manual. Disini kita menemukan bahwa setiap inventory film Academy Dinosaurus (1, 2, 3, dan 4) tersedia untuk disewakan, karena semua inventory tersebut telah dikembalikan ke toko 1.

Tahap terakhir kita melengkapi struktur query diatas, sbb:


 dan berikut adalah ringkasan format query :


 





Komentar