Minggu, 30 Mei 2010

Subquery dan Contoh Soalnya

Pengertian singkat tentang “subquery” adalah perintah SELECT yang berada di dalam perintah SQL lain. Subquery sangat berguna ketika kita ingin menampilkan data dengan kondisi yang bergantung pada data di dalam table itu sendiri.
Berikut ini adalah sebuah contoh soal dari penggunaan Subquery:
Sebelumnya kita akan membuat table terlebih dahulu:

1. Tmaster


Note: NO dijadikan sebagai primary key

2. Tanggota


Note: ID dijadikan sebagai primary key

3. Ttransaksi


Note: terdapat foreign key, yaitu pada ID_peminjam dan NOFILM.
Langsung saja kita latihan yaa..

Soal no. 1 :

Tampilkan seluruh film yang diproduksi tahun 2010.

Query:

Select judul from tmaster where tahun in (select tahun from tmaster where tahun = ‘2010’);

Output:





Soal no. 2 :

Tampilkan film – film yang BUKAN ber-genre ‘action’.

Query :

Select judul from tmaster where genre not in (select genre from tmaster where genre = ‘action’);

Output:



Soal no.3 :
Tampilkan jumlah film yang diproduksi pada tahun ‘2007’.

query:

select count(judul) from tmaster where tahun in (select tahun from tmaster where tahun = '2007');

Output:



soal no. 4:

tampilkan nomor ID peminjam yang dendanya sebanyak 1000.

query:

select id_peminjam from ttransaksi where denda in (select denda from id_peminjam where denda = '1000');

output:



soal no.5 :

tampilkan nama - nama peminjam yang tidak memiliki denda pada transaksi peminjaman

query :

select ta.nama from tanggota ta, ttransaksi tt where ta.id = tt.id_peminjam and tt.denda in (select min(denda) from ttransaksi);

output:



soal no. 6 :

tampilkan jumlah denda dari RINTUL.

query :

select sum(denda) from tanggota ta join ttransaksi tt on (ta.id = tt.id_peminjam)
where ta.nama in (select ta.nama from tanggota ta where ta.nama = 'rintul');

output:



soal no. 7 :

tampilkan data - data peminjaman anggota antara 1 januari 2005 sampai 1 januari 2007.

query :

select tt.id_peminjam, tt.nofilm, tt.tgl_pinjam, tt.tgl_kembali, tt.denda from tanggota ta join ttransaksi tt on (ta.id = tt.id_peminjam) where tt.tgl_pinjam in (select tt.tgl_pinjam from ttransaksi tt where tt.tgl_pinjam between '01-01-2005' and '04-03-2010');

output:



soal no. 8 :

tampilkan data peminjaman anggota yang bernama 'OCTOSIS'.

query:

select tt.id_peminjam, tt.nofilm, tt.tgl_pinjam, tt.tgl_kembali. tt.denda from ttransaksi tt, tanggota ta where ta.id = tt.id_peminjam and ta.nama in (select ta.nama from tanggota ta where ta.nama = 'octosis');

output:



soal no. 9 :

bimantoko ingin melihat film apa saja yang telah dia pinjam beserta data peminjaman lainnya di bawah tahun 2010 dan dendanya jika ada.

query:

select tt.id_peminjam, tt.nofilm, tt.denda, tm.judul, tt.tgl_pinjam, tt.tgl_kembali from ttransaksi tt, tmaster tm, tanggota ta where ta.id = tt.id_peminjam and tm.no = tt.nofilm and ta.nama in (select ta.nama from tanggota ta where ta.nama = 'bimantoko') and tt.tgl_pinjam in (select tt.tgl_pinjam from ttransaksi where tt.tgl_pinjam < '01-01-2010');

output:



soal no.10 :

tampilkan semua nama anggota yang meminjam film 'transformer 2'.

query:

select ta.nama from tanggota ta, tmaster tm, ttransaksi tt where ta.id = tt.id_peminjam and tm.no = tm.nofilm and tm.judul in (select tm.judul from tmaster tm where tm.judul = 'transformer 2');

output:



download link

2 komentar:

You Know Me mengatakan...

terima kasih ilmunya.. sangat bermanfaat pak.. ^^

yellow mengatakan...

kyknya no 1-5 g perlu pake subquery jg bisa deh..

Posting Komentar