Keanehan Soal Latihan SBD
Setelah saya teliti lagi.. ternyata ada keanehan pada soal latihan SBD praktikum. Soalnya yaitu soal01B nomer 10. Di soal hasilnya seperti ini:

Dengan DB relation:

Dan ini script creator dBnya:
[code='sql']
CREATE TABLE MsAnggota
(
KdAnggota char(5)primary key not null,
Nama varchar(30) not null,
Alamat varchar(50),
Telp numeric,
constraint tes check (len(KdAnggota)=5),
constraint tes2 check (KdAnggota like 'NT[0-9][0-9][0-9]'),
constraint tes3 check (len(Telp) <11)
)
CREATE TABLE MsKasir
(
KdKasir char(5)primary key not null,
Nama varchar(30) not null,
Alamat varchar(50),
Telp numeric,
Gaji numeric,
constraint tes4 check (len(KdKasir)=5),
constraint tes5 check (KdKasir like 'KY[0-9][0-9][0-9]'),
constraint tes6 check (len(Telp) <11)
)
CREATE TABLE MsKursus
(
KdKursus char(5)primary key not null,
NamaKursus varchar(30) not null,
Biaya numeric,
constraint tes7 check (len(KdKursus)=5),
constraint tes8 check (KdKursus like 'MK[0-9][0-9][0-9]')
)
CREATE TABLE TrHeaderPendaftaran
(
KdPendaftaran char(5)primary key not null,
TanggalPendaftaran datetime,
KdAnggota char(5),
KdKasir char(5),
constraint tes9 check (len(KdPendaftaran)=5),
constraint tes10 check (KdPendaftaran like 'KP[0-9][0-9][0-9]'),
foreign key(KdAnggota)REFERENCES MsAnggota ON UPDATE CASCADE ON DELETE CASCADE,
foreign key(KdKasir)REFERENCES MsKasir ON UPDATE CASCADE ON DELETE CASCADE
)
CREATE TABLE TrDetailPendaftaran
(
KdKursus char(5),
KdPendaftaran char(5),
JumlahPertemuan int not null,
primary key(KdKursus,KdPendaftaran),
foreign key(KdKursus)REFERENCES MsKursus ON UPDATE CASCADE ON DELETE CASCADE,
foreign key(KdPendaftaran)REFERENCES TrHeaderPendaftaran ON UPDATE CASCADE ON DELETE CASCADE
)
insert into MsAnggota values('NT001','Ricky','Gang Manggis X,tanjung duren','5690962')
insert into MsAnggota (kdanggota,nama,alamat)values('NT002','Winardi','Jl. Keluarga no 36')
insert into MsAnggota values('NT003','Andreas','Jl. Dwiwarna Gg buntu no 42D','7894613')
insert into MsAnggota values('NT004','Gerry','Jl. Keluarga no 39b','3456789')
insert into MsAnggota values('NT005','Reynold','Jl. Jenderal Sudirman No.14','5875646')
insert into MsAnggota values('NT006','Sukandi','Jl. Patimura no 15','7545451')
insert into MsAnggota (kdanggota,nama,alamat)values('NT007','Belinda','Jl. Gatot Subroto')
insert into MsAnggota values('NT008','Silvia','Jl. Kartini 3','5402356')
insert into MsKasir values('KY001','Daniel','Jl. Anggrek no 13','2548454','950000')
insert into MsKasir (kdkasir,nama,alamat,gaji)values('KY002','Michael','Jl. Rascheans no 54','900000')
insert into MsKasir values('KY003','Tommy','Jl. Peter Pan no 18','3545464','750000')
insert into MsKasir values('KY004','Hendra','Jl. Syahdan no 45','4454585','850000')
insert into MsKasir (kdkasir,nama,alamat,gaji)values('KY005','Heru','Jl. Beautiful 15','825000')
insert into MsKasir values('KY006','Fransisca','Jl. Melati no 47','4789646','725000')
insert into MsKasir values('KY007','Hendrayu','Jl. Rafflesia arnoldi no 10','5642254','925000')
insert into MsKasir values('KY008','Fendy','Jl. Cinderela no 17','4785462','800000')
insert into MsKursus values('MK001','Sistem Multimedia','500000')
insert into MsKursus values('MK002','Java','550000')
insert into MsKursus values('MK003','VB.NET','700000')
insert into MsKursus values('MK004','PHP','750000')
insert into MsKursus values('MK005','Sistem Basis Data','300000')
insert into MsKursus values('MK006','Networking','800000')
insert into MsKursus values('MK007','DataWareHouse','450000')
insert into MsKursus values('MK008','Sistem Operasi','500000')
insert into TrHeaderPendaftaran values('KP001','01/01/2008','NT008','KY007')
insert into TrHeaderPendaftaran values('KP002','12/01/2008','NT002','KY006')
insert into TrHeaderPendaftaran values('KP003','10/01/2008','NT005','KY008')
insert into TrHeaderPendaftaran values('KP004','12/02/2008','NT004','KY002')
insert into TrHeaderPendaftaran values('KP005','03/03/2008','NT003','KY001')
insert into TrHeaderPendaftaran values('KP006','02/03/2008','NT006','KY005')
insert into TrHeaderPendaftaran values('KP007','10/03/2008','NT001','KY003')
insert into TrHeaderPendaftaran values('KP008','01/04/2008','NT007','KY004')
insert into TrHeaderPendaftaran values('KP009','05/04/2008','NT002','KY007')
insert into TrHeaderPendaftaran values('KP010','10/05/2008','NT007','KY005')
insert into TrDetailPendaftaran values('MK001','KP008','10')
insert into TrDetailPendaftaran values('MK001','KP007','10')
insert into TrDetailPendaftaran values('MK002','KP005','9')
insert into TrDetailPendaftaran values('MK002','KP001','9')
insert into TrDetailPendaftaran values('MK003','KP002','11')
insert into TrDetailPendaftaran values('MK003','KP003','11')
insert into TrDetailPendaftaran values('MK004','KP008','12')
insert into TrDetailPendaftaran values('MK004','KP009','12')
insert into TrDetailPendaftaran values('MK005','KP007','8')
insert into TrDetailPendaftaran values('MK005','KP001','8')
insert into TrDetailPendaftaran values('MK006','KP006','10')
insert into TrDetailPendaftaran values('MK007','KP010','9')
insert into TrDetailPendaftaran values('MK007','KP004','9')
insert into TrDetailPendaftaran values('MK008','KP010','9')
[/code]
Dan ini script query dari asisten punya:
[code='sql']
select distinct ma.nama,namakursus, month(tanggalpendaftaran)as Bulan
from mskursus as mk,trdetailpendaftaran as td,
trheaderpendaftaran as th,msanggota as ma
where
month(tanggalpendaftaran)>8 and month(tanggalpendaftaran) <12
and
len(ma.nama) =5
and namakursus like '% %'
and namakursus not like '% % %'
[/code]
Dan ini query saya:
[code='sql']
select distinct ma.nama, namakursus, month(tanggalpendaftaran) Bulan
from msanggota ma, mskursus mk, trheaderpendaftaran th, trdetailpendaftaran td
where month(tanggalpendaftaran)>8 and month(tanggalpendaftaran)<12
and len(ma.nama) = 5
and namakursus like '% %'
and namakursus not like '% % %'
and ma.kdanggota = th.kdanggota
and mk.kdkursus = td.kdkursus
and th.kdpendaftaran = td.kdpendaftaran
[/code]
Nah kenapa aneh?
Karena hasil dari query saya dengan query dari lab itu beda hasilnya, dan setelah saya teliti secara manual saya baca databasenya langsung, memang ada keanehan dari hasil query asisten lab.
Ada yang bisa menjelaskan kenapa hasilnya bisa seperti ini?
Apakah kita disuruh untuk menampilkan hasil yang sesuai dengan yang diminta ataukah kita harus membuat query dengan benar?
Tolong kalau ada yang tau silakan dijawab, terutama dari pihak asisten Lab, karena terus terang dalam mengerjakan ujian saya jadi ragu apakah query yang saya lakukan udah benar ato belum?
Maklum kalo saya salah, soalnya saya pemula di bidang database ini.
[Update 4 Robi' Ats Tsani]
Barusan chat ma si Lena, pada kenal kan anak TI binus? Hehe..
Ternaya dia nemuin juga keanehan, ya walopun dia ga yakin, tapi gpp kan klo gw posting hasil chatnya?
Ini nih:
[code='xml']
lena: dia minta nampilin blablabla
lena: dengan namaalat musik mengandung a dan o
lena: g buat nama like'%a%' and '%o%'
tkid: yap
lena: kan
lena: dptnya beda
lena: org yg tulis '%a%o%' dptnya sama
lena: jadi kayaknya
lena: mereka cuma dapet alatmusik saxophone
lena: g dapetnya itu ama biola
lena: ada a dan o
lena: kan
lena: tp ya g gak tau juga sih
lena: siapa tau g salah
tkid: ga salah jg kok lo
tkid: mungkin kalimatnya aja yang kurang jelas
tkid: klo emg yg diminta itu '%a%o%'
tkid: kalimatnya kan harus lebih jelas
tkid: misal alatmusik yang mengandung a kemudian o
dalam nama alatmusik tersebut
lena: makanya
lena: kun juga sama ma g
lena: makanya g agak ykin menurut soal g benr
lena: tp kan ada yg menurut tabel hasil
lena: tp ya gak tau juga sih
tkid: yaudh deh
tkid: eh boleh ga gw posting chat ini?
tkid: khusus yg ngebahas soal sbd ini
lena: trserah u d
lena: asal u cantumin kata ketidakyakinan g
[/code]
Demikian laporan saya. [Halah sok! hehe..]

