A. Relational Model Untuk Kasus Rawat Inap
Beberapa Query Yang Dapat Digunakan Dalam Memperoleh Informasi 1. Menampilkan Biaya Pasien : SELECT r.IdPasien,p.NamaLengkap As Nama_Pasien, d.NamaLengkap As Nama_Dokter,DATEDIFF(WktKeluar,WktMasuk) AS Lama_Ranap,DATEDIFF(WktKeluar,WktMasuk)* (rg.Biaya+d.TarifKonsul) AS Biaya_Pasien FROM pasien p,ranap r,ruang rg,dokter d WHERE p.IdPasien = r.IdPasien AND r.IdDr = d.IdDr AND r.IdRuang = rg.IdRuang;
2. Menampilkan Pasien Yang Paling Sering Dirawat : SELECT p.IdPasien,p.NamaLengkap,COUNT(r.IdPasien) AS Banyak_Rawat FROM pasien p,ranap r WHERE r.IdPasien = p.IdPasien GROUP BY p.NamaLengkap,p.IdPasien HAVING Banyak_Rawat = (SELECT MAX(T.Banyak_Rawat) AS Maksimum FROM (SELECT p.IdPasien,COUNT(r.IdPasien) AS Banyak_Rawat FROM pasien p,ranap r WHERE r.IdPasien = p.IdPasien GROUP BY p.IdPasien) AS T);
3.
Menampilkan Ruangan Yang Paling Jarang Dipakai : SELECT rg.IdRuang,rg.NamaRuang,COUNT(r.IdRuang) AS Frekuensi_Pakai FROM ruang rg ,ranap r WHERE r.IdRuang = rg.IdRuang GROUP BY rg.NamaRuang,rg.Idruang HAVING Frekuensi_Pakai = (SELECT MIN(T.Frekuensi_Pakai) AS Minimum FROM (SELECT rg.IdRuang,COUNT(r.IdRuang) AS Frekuensi_Pakai FROM ruang rg,ranap r WHERE r.IdRuang = rg.IdRuang GROUP BY rg.Idruang ) AS T );
4. Menampilkan Dokter Yang Belum Pernah Melakukan Perawatan : SELECT d.IdDr,d.NamaLengkap,d.Spesialisasi FROM dokter d WHERE d.IdDr NOT IN (SELECT DISTINCT(r.IdDr) FROM Ranap r);
Atau dengan menggunakan klausa Left Outer Join diperoleh : SELECT * FROM dokter d Left Outer Join ranap r on r.iddr = d.iddr
Untuk tupel yang nilainya null belum pernah melakukan perawatan
menunjukkan
bahwa
dokter
tersebut
Left Outer Join adalah bagin dari natural join dimana Left berarti mengambil seluruh tupel dari atribut dengan domain yang sama dari kedua entitas yang dijoinkan, kemudian memasangkan seluruh tupel dari entitas yang disebelah kiri pada atribut dengan domain yang sama dari kiri ke kanan dimana jika ada atribut dengan domain yang sama yang tidak match, maka nilai seluruh atribut pada tupel tersebut untuk entitas yang berada di sebelah kanan diisi dengan null.
5.
Menampilkan Pasien Yang Paling Lama Dirawat : SELECT p.NamaLengkap,r.IdPasien,DateDIFF(WktKeluar,WktMasuk) As Perawatan_Paling_Lama FROM Pasien p,Ranap r WHERE r.IdPasien = p.IdPasien HAVING Perawatan_Paling_Lama =(SELECT MAX(MR.Lama_Rawat) As Perawatan_Paling_Lama FROM (SELECT p.NamaLengkap, r.IdPasien,DateDIFF(WktKeluar, WktMasuk) As Lama_Rawat FROM Pasien p,Ranap r WHERE r.IdPasien = p.IdPasien) AS MR );
6.
Menampilkan Jumlah Biaya Kumulatif Pasien : SELECT p.IdPasien,SUM(DATEDIFF(WktKeluar,WktMasuk)*(rg.Biaya + d.TarifKonsul)) AS Biaya_Kumulatif_Pasien FROM pasien p,ranap r,ruang rg,dokter d WHERE r.IdPasien = p.IdPasien AND r.IdRuang = rg.IdRuang AND r.IdDr = d.IdDr GROUP BY p.IdPasien;
7.
Menampilkan Pasien Dengan Biaya Maksimum : SELECT p.IdPasien,p.NamaLengkap,SUM(DATEDIFF(WktKeluar, WktMasuk)*(rg.Biaya + d.TarifKonsul)) AS Biaya_Kumulatif_Maksimum_Pasien FROM pasien p,ranap r,ruang rg,dokter d WHERE r.IdPasien = p.IdPasien AND r.IdRuang = rg.IdRuang AND r.IdDr = d.IdDr GROUP BY p.IdPasien,p.NamaLengkap HAVING Biaya_Kumulatif_Maksimum_Pasien = (SELECT MAX(T.Biaya_Kumulatif_Pasien) AS Biaya_Maksimum_Pasien FROM(SELECT p.IdPasien,SUM(DATEDIFF(WktKeluar,WktMasuk)* (rg.Biaya + d.TarifKonsul)) AS Biaya_Kumulatif_Pasien FROM pasien p,ranap r,ruang rg,dokter d WHERE r.IdPasien = p.IdPasien AND r.IdRuang = rg.IdRuang AND r.IdDr = d.IdDr GROUP BY p.IdPasien) AS T );
8.
Menampilkan Pasien Yang Pernah Dirawat Oleh Dokter Kandungan : SELECT r.IdPasien,p.NamaLengkap AS Pasien,d.NamaLengkap AS Dokter,d.Spesialisasi FROM pasien p,ranap r,dokter d WHERE r.IdPasien = p.IdPasien AND r.IdDr = d.IdDr AND d.Spesialisasi = 'Kandungan';
9.
Menampilkan Pasien Yang Belum Pernah Dirawat Oleh Dokter Kandungan (Termasuk Yang Belum Pernah Melakukan Rawat Inap) : SELECT p.IdPasien,p.NamaLengkap AS Pasien FROM pasien p WHERE p.IdPasien NOT IN (SELECT r.IdPasien FROM ranap r,dokter d WHERE r.IdDr = d.IdDr AND d.Spesialisasi = 'Kandungan');
10.
Menampilkan Pasien Dengan Jumlah Biaya Perawatan Tertentu : SELECT p.IdPasien,p.NamaLengkap,SUM(DATEDIFF(WktKeluar, WktMasuk)*(rg.Biaya + d.TarifKonsul)) AS Biaya_Kumulatif_Minimum_80000000 FROM pasien p,ranap r,ruang rg,dokter d WHERE r.IdPasien = p.IdPasien AND r.IdRuang = rg.IdRuang AND r.IdDr = d.IdDr GROUP BY p.IdPasien,p.NamaLengkap HAVING Biaya_Kumulatif_Minimum_80000000 >= 80000000;
B. Relational Model Untuk Latihan Akademik
Beberapa Query Yang Dapat Digunakan Dalam Memperoleh Informasi 1. A. Menampilkan Nama Mahasiswa Beserta Jumlah Sks Yang Telah Diprogram (Mata Kuliah Yang Diulang Masuk Dalam Perhitungan): SELECT p.nim,m.nama,SUM(mk.sks) AS JUMLAH_SKS FROM matakuliah mk,peserta p,mahasiswa m,kuliah k WHERE p.nim = m.nim AND p.kodekuliah = k.kodekuliah AND k.kodemk = mk.kodemk GROUP BY p.nim,m.nama
B. MENAMPILKAN JUMLAH SKS YANG DIPROGRAM DENGAN ASUMSI MK YANG DIULANG DIAMBIL YANG TERAKHIR VERSE I SELECT m.nama,T.nim,SUM(mk.sks) AS TOTAL_SKS_MHS FROM matakuliah mk,peserta p,mahasiswa m,kuliah k, (SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim,k.kodemk) AS T WHERE T.TERAKHIR_MENGAMBIL_MK = k.thnakademik AND T.nim = p.nim AND T.nim = m.nim AND T.kodemk = mk.kodemk AND T.kodemk = k.kodemk AND k.kodekuliah = p.kodekuliah AND p.nilai <= ’D’ GROUP BY m.nama,T.nim
VERSE II SELECT p.nim,m.nama,SUM(mk.sks) AS TOTAL_SKS FROM peserta p,mahasiswa m, kuliah k,matakuliah mk WHERE k.kodekuliah = p.kodekuliah AND k.kodemk = mk.kodemk AND p.nim = m.nim AND p.nilai =< ‘D’ AND (p.nim,k.kodemk,k.thnakademik) IN ( SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah
GROUP BY p.nim,k.kodemk) GROUP BY p.nim,m.nama VERSE III SELECT p.nim,m.nama,k.kodemk,mk.sks, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p, mahasiswa m, matakuliah mk WHERE k.kodekuliah = p.kodekuliah AND p.nim = m.nim AND k.kodemk = mk.kodemk GROUP BY p.nim,m.nama,k.kodemk, mk.sks CREATE VIEW V AS SELECT p.nim,m.nama,k.kodemk,mk.sks, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p, mahasiswa m, matakuliah mk WHERE k.kodekuliah = p.kodekuliah AND p.nim = m.nim AND k.kodemk = mk.kodemk GROUP BY p.nim,m.nama,k.kodemk,mk.sks SELECT nim,nama,SUM(sks) AS JUMLAH_SKS FROM V GROUP BY nim,nama;
VERSE IV (ASUMSI Jumlah SKS Untuk MK yang Sama Tidak Berubah) SELECT T.nim,T.nama,SUM(T.sks) AS JUMLAH_SKS FROM (SELECT p.nim,m.nama,k.kodemk,mk.sks, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p, mahasiswa m, matakuliah mk WHERE k.kodekuliah = p.kodekuliah AND p.nim = m.nim AND k.kodemk = mk.kodemk AND p.nilai <= ‘D’ GROUP BY p.nim,m.nama,k.kodemk,mk.sks) AS T GROUP BY T.nim,T.nama
2. MENAMPILKAN DATA YANG DAPAT DIGUNAKAN DALAM MENGHITUNG IPK SELECT P.nim,m.nama,mk.sks,p.nilai,((69-ASCII(UPPER(p.nilai)))*mk.sks) AS Bobot FROM (SELECT p.nim,m.nama,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p, mahasiswa m WHERE k.kodekuliah = p.kodekuliah AND p.nim = m.nim GROUP BY p.nim,m.nama,k.kodemk) AS T,Kuliah k,peserta p,mahasiswa m, matakuliah mk WHERE k.thnakademik = T.TERAKHIR_MENGAMBIL_MK AND p.nim = T.nim AND K.kodemk = T.kodemk AND k.kodemk = mk.kodemk AND m.nim = T.nim AND p.nilai <= ‘D’ AND k.kodekuliah = p.kodekuliah
3. MENAMPILKAN DOSEN YANG MENGAMPU MATA KULIAH DENGAN JUMLAH MAHASISWA <= 15 ORANG SELECT k.kodekuliah, d.nama,mk.kodemk, COUNT(p.nim)AS JUMLAH_MHS FROM dosen d,kuliah k,peserta p,matakuliah mk WHERE d.nip = k.nip AND mk.kodemk = k.kodemk AND p.kodekuliah = k.kodekuliah GROUP BY k.kodekuliah,d.nama,mk.kodemk HAVING JUMLAH_MHS <= 15;
4. MENAMPILKAN MAHAISWA BESERTA JUMLAH SKS YANG LULUS >= 100 SKS SELECT m.nama,T.nim,SUM(mk.sks) AS TOTAL_SKS_MHS FROM matakuliah mk,peserta p,mahasiswa m,kuliah k, (SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim,k.kodemk) AS T WHERE T.TERAKHIR_MENGAMBIL_MK = k.thnakademik AND T.nim = p.nim AND p.nim = m.nim AND T.kodemk = mk.kodemk AND k.kodemk = mk.kodemk AND k.kodekuliah = p.kodekuliah AND p.nilai <= 'D' GROUP BY m.nama,T.nim HAVING TOTAL_SKS_MHS > 100
MENAMPILKAN MAHASISWA BESERTA JUMLAH SKS YANG LULUS >= 10 SKS TETAPI BELUM LULUS TA (Yang Belum Ambil TA dan Sudah Ambil TA Tetapi Belum LULUS ) SELECT m.nama,T.nim,SUM(mk.sks) AS TOTAL_SKS_MHS FROM matakuliah mk,peserta p,mahasiswa m,kuliah k, (SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim,k.kodemk) AS T WHERE T.TERAKHIR_MENGAMBIL_MK = k.thnakademik AND T.nim = p.nim AND p.nim = m.nim AND T.kodemk = mk.kodemk AND k.kodemk = mk.kodemk AND k.kodekuliah = p.kodekuliah AND p.nilai <= 'D' GROUP BY m.nama,T.nim HAVING TOTAL_SKS_MHS > 10 AND (T.nim,m.nama) NOT IN ( SELECT V.nim,m.nama FROM matakuliah mk,peserta p,mahasiswa m,kuliah k, (SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_TA FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim,k.kodemk) AS V WHERE V.TERAKHIR_TA = k.thnakademik AND V.nim = p.nim AND p.nim = m.nim AND V.kodemk = mk.kodemk AND k.kodemk = mk.kodemk AND k.kodekuliah = p.kodekuliah AND p.nilai <='D' AND mk.kodemk = 'M0016')
MENAMPILKAN MAHASISWA BESERTA JUMLAH SKS YANG LULUS >= 10 SKS TETAPI BELUM LULUS TA (Yang Sudah Ambil TA Tetapi Belum LULUS ) SELECT * FROM (SELECT m.nama,T.nim,SUM(mk.sks) AS TOTAL_SKS_MHS FROM matakuliah mk,peserta p,mahasiswa m,kuliah k, (SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim,k.kodemk) AS T WHERE T.TERAKHIR_MENGAMBIL_MK = k.thnakademik
AND T.nim = p.nim AND p.nim = m.nim AND T.kodemk = mk.kodemk AND k.kodemk = mk.kodemk AND k.kodekuliah = p.kodekuliah AND p.nilai <= 'D' GROUP BY m.nama,T.nim HAVING TOTAL_SKS_MHS > 10) AS A Natural Join (SELECT m.nama,V.nim,mk.nama AS Matkul,p.nilai FROM matakuliah mk,peserta p,mahasiswa m,kuliah k, (SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_TA FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim,k.kodemk) AS V WHERE V.TERAKHIR_TA = k.thnakademik AND V.nim = p.nim AND p.nim = m.nim AND V.kodemk = mk.kodemk AND k.kodemk = mk.kodemk AND k.kodekuliah = p.kodekuliah AND p.nilai >'D' AND mk.kodemk = 'M0016') AS B
5.
MENAMPILKAN IPK MAHASISWA DENGAN ASUMSI UNTUK MK YANG DIULANG DIAMBIL NILAI TERAKHIR VERSE I (Asumsi SKS Tidak Berubah Untuk MK yang Sama ) SELECT P.nim,m.nama,SUM((69- ASCII(UPPER(p.nilai)))*T.sks)/SUM(T.sks) AS IPK FROM (SELECT p.nim,k.kodemk,mk.sks, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p, matakuliah mk WHERE k.kodekuliah = p.kodekuliah AND k.kodemk = mk.kodemk GROUP BY p.nim,k.kodemk,mk.sks) AS T,Kuliah k,peserta p,mahasiswa m WHERE k.thnakademik = T.TERAKHIR_MENGAMBIL_MK AND p.nim = T.nim AND m.nim = T.nim AND K.kodemk = T.kodemk AND k.kodekuliah = p.kodekuliah GROUP BY P.nim,m.nama
VERSE II (Asumsi SKS Dapat Berubah Untuk MK yang Sama ) SELECT P.nim,m.nama,SUM((69- ASCII(UPPER(p.nilai)))*Mk.sks)/SUM(Mk.sks) AS IPK FROM (SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_MENGAMBIL_MK FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim, k.kodemk) AS T,Kuliah k,peserta p,matakuliah mk, mahasiswa m WHERE k.thnakademik = T.TERAKHIR_MENGAMBIL_MK AND p.nim = T.nim AND m.nim = T.nim AND K.kodemk = T.kodemk AND Mk.kodemk = T.kodemk AND K.kodekuliah = p.kodekuliah GROUP BY P.nim,m.nama
MENAMPILKAN IP SEMESTER MAHASISWA SELECT P.nim,m.nama,k.semester,k.thnakademik,SUM((69 ASCII(UPPER(p.nilai)))*Mk.sks)/SUM(Mk.sks) AS IP_Semester FROM Kuliah k,peserta p,matakuliah mk,mahasiswa m WHERE p.nim = m.nim AND K.kodemk = MK.kodemk AND K.kodekuliah = p.kodekuliah GROUP BY P.nim,m.nama,k.semester,k.thnakademik
6. MENAMPILKAN JUMLAH MAHASISWA YANG TELAH LULUS TA SELECT COUNT(m.nama) AS JML_LULUS_TA FROM matakuliah mk,peserta p,mahasiswa m,kuliah k, (SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_TA FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim,k.kodemk) AS V WHERE V.TERAKHIR_TA = k.thnakademik AND V.nim = p.nim AND p.nim = m.nim AND V.kodemk = mk.kodemk AND k.kodemk = mk.kodemk AND k.kodekuliah = p.kodekuliah AND p.nilai <='D' AND mk.kodemk = 'M0016'
7. MENAMPILKAN MAHASISWA YANG TELAH LULUS TA BESERTA NILAI SELECT V.nim,m.nama,mk.Kodemk,p.nilai FROM matakuliah mk,peserta p,mahasiswa m,kuliah k, (SELECT p.nim,k.kodemk, MAX(k.thnakademik) AS TERAKHIR_TA FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim,k.kodemk) AS V WHERE V.TERAKHIR_TA = k.thnakademik AND V.nim = p.nim AND p.nim = m.nim AND V.kodemk = mk.kodemk AND k.kodemk = mk.kodemk AND k.kodekuliah = p.kodekuliah AND p.nilai <='D' AND mk.kodemk = 'M0016'
8. MENAMPILKAN MAHASISWA BESERTA IPK DENGAN ASUMSI MK YANG DIULANG DIAMBIL NILAI TERBAIK SELECT P.nim,m.nama,SUM((69-ASCII(UPPER(p.nilai)))*Mk.sks)/SUM(Mk.sks) AS IP_Semester FROM (SELECT p.nim,k.kodemk, MIN(p.nilai) AS Nilai_Terbaik FROM kuliah k,peserta p WHERE k.kodekuliah = p.kodekuliah GROUP BY p.nim,k.kodemk) AS T,Kuliah k,peserta p,matakuliah mk,mahasiswa m WHERE p.nilai = T.Nilai_Terbaik AND p.nim = T.nim AND m.nim = T.nim AND K.kodemk = T.kodemk AND Mk.kodemk = T.kodemk AND K.kodekuliah = p.kodekuliah GROUP BY P.nim,m.nama
9. Menampilkan Banyaknya Nilai Tertentu Dari Seorang Dosen SELECT COUNT(p.Nilai)Jumlah_Nilai_A,k.Kodekuliah,d.Nama FROM Peserta p,kuliah k,dosen d WHERE d.nip = k.nip AND p.nilai = 'A' AND p.kodekuliah = k.kodekuliah GROUP BY k.kodekuliah,d.Nama;
10. Menampilkan Dosen Beserta Nama dan Kode Kuliah Yang Jumlah Nilai A > Jumlah Nilai B SELECT d.nip,d.nama,k.kodekuliah FROM dosen d,kuliah k, (SELECT COUNT(p.Nilai) Jumlah_Nilai_A,k.Kodekuliah,d.Nama FROM Peserta p,kuliah k,dosen d WHERE d.nip = k.nip AND p.nilai = 'A' AND p.kodekuliah = k.kodekuliah GROUP BY k.kodekuliah,d.nama) as V, (SELECT COUNT(p.Nilai) Jumlah_Nilai_B,k.Kodekuliah,d.Nama FROM Peserta p,kuliah k,dosen d WHERE d.nip = k.nip AND p.nilai = 'B' AND p.kodekuliah = k.kodekuliah GROUP BY k.kodekuliah,d.nama) as T WHERE k.nip = d.nip AND T.nama = d.nama AND V.nama = d.Nama AND T.kodekuliah = k.kodekuliah AND V.kodekuliah = k.Kodekuliah AND V.Jumlah_Nilai_A > T.Jumlah_Nilai_B;
11. Menampilkan Dosen Yang Jumlah Nilai B Dari semua Mata Kuliah Yang Diampu > 20% SELECT d.nama,((V.Nilai_B/T.JML_NILAI)*100) AS Presentase FROM dosen d, (SELECT k.nip,d.nama,COUNT(*) as JML_NILAI FROM kuliah k,dosen d,peserta p WHERE k.nip = d.nip AND p.kodekuliah = k.kodekuliah GROUP BY k.nip,d.nama) as T, (SELECT k.nip,d.nama,COUNT(*) as Nilai_B FROM kuliah k,dosen d,peserta p WHERE k.nip = d.nip AND p.kodekuliah = k.kodekuliah AND p.nilai = 'B' GROUP BY k.nip,d.nama) as V WHERE V.nip = T.nip AND V.nip = d.nip AND T.nip = d.nip AND V.nama = T.nama AND V.nama = d.nama AND T.nama = d.nama AND ((V.Nilai_B/T.JML_NILAI)*100)>20;
12. Menampilkan Mahasiswa yang Telah Lulus Lebih Dari 10 SKS dan IPK Lebih Dari 2.70 SELECT T.nim,m.nama,SUM(mk.sks) AS JML_SKS, SUM((69ASCII(Upper(p.nilai)))*mk.sks)/SUM(mk.sks) AS IPK FROM (SELECT MIN(P.Nilai) AS Terbaik,k.kodemk,p.nim FROM kuliah k,peserta p WHERE p.kodekuliah = k.kodekuliah GROUP BY p.nim,k.kodemk) AS T, matakuliah mk,peserta p,mahasiswa m,kuliah k WHERE T.NIm = p.nim AND T.Nim = m.nim AND T.kodemk = K.kodemk AND T.kodemk = mk.kodemk AND T.Terbaik = p.nilai AND k.kodekuliah = p.kodekuliah AND p.nilai <= 'D' GROUP BY T.nim,m.nama HAVING JML_SKS >=10 AND IPK >= 2.70
C. Relational Model Untuk Sistem Informasi Restoran
Beberapa Query Yang Digunakan untuk Mendpatkan Informasi 1. MENAMPILKAN DAFTAR PEMBELIAN OLEH IDPESANAN TERTENTU VERSE 1 SELECT m.nama,dp.jumlah FROM detilpesanan dp JOIN menu m ON m.idmenu = dp.idmenu AND dp.idpesanan = 2 VERSE 2 SELECT m.nama,dp.jumlah FROM detilpesanan dp, menu m WHERE m.idmenu = dp.idmenu AND dp.idpesanan = 2
nama
jumlah
Udah Bakar Madu
1
Ayam Bakar Spesial
1
Sirloin Double
1
Avocado Float
3
2. MENAMPILKAN MEJA YANG SEMENTARA DIPAKAI VERSE 1: SELECT pm.idmeja,m.no_meja AS Terpakai FROM meja m,pakaimeja pm WHERE pm.idmeja = m.idmeja AND pm.jam_bayar IS NULL; VERSE 2 SELECT m.idMeja, m.no_meja AS Terpakai FROM meja m JOIN pakaimeja pm ON m.idMeja = pm.idMeja AND pm.jam_bayar IS NULL;
3.MENAMPILAKAN MEJA YANG TELAH SELESAI DIPAKAI SELECT pm.idmeja,m.no_meja AS Free,jam_bayar FROM meja m,pakaimeja pm WHERE pm.idmeja = m.idmeja AND pm.jam_bayar IS NOT NULL
4.MENAMPILKAN MEJA YANG DAPAT DIPAKAI(BELUM TERPAKAI ATAU TELAH SELESAI DIPAKAI) SELECT idmeja,no_meja AS Dapat_Dipakai FROM meja WHERE idmeja NOT IN (SELECT pm.idmeja FROM meja m,pakaimeja pm WHERE pm.idmeja = m.idmeja AND pm.jam_bayar IS NULL);
5.MENAMPILKAN PESANAN YANG PALING LARIS VERSE 1 SELECT m.nama,MAX(JL.JML) AS PALING_FAVORIT FROM menu m, (SELECT m.nama ,m.idmenu,SUM(dp.jumlah) AS JML FROM detilpesanan dp join menu m ON m.idmenu = dp.idmenu GROUP BY m.nama,m.idmenu) AS JL WHERE m.idmenu = JL.idmenu VERSE 2 SELECT m.idmenu,m.nama,SUM(dp.jumlah) AS PALING_BANYAK_TERPESAN FROM detilpesanan dp,menu m WHERE m.idmenu = dp.idmenu GROUP BY m.nama,m.idmenu HAVING PALING_BANYAK_TERPESAN = (SELECT MAX(JL.JML) AS PALING_FAVORIT FROM (SELECT m.nama ,m.idmenu,SUM(dp.jumlah) AS JML FROM detilpesanan dp JOIN menu m ON m.idmenu = dp.idmenu GROUP BY m.nama,m.idmenu) AS JL);
6.MENAMPILAKAN TOTAL PEMBAYARAN IDPESANAN TETENTU VERSE 1 SELECT p.idpesanan, SUM(dp.jumlah*m.harga) AS TOTAL FROM pesanan p JOIN menu m JOIN detilpesanan dp ON dp.idmenu = m.idmenu AND p.idpesanan = dp.idpesanan AND p.idpesanan = 2; VERSE 2 SELECT p.idpesanan, SUM(dp.jumlah*m.harga) AS TOTAL FROM pesanan p,menu m,detilpesanan dp WHERE dp.idmenu = m.idmenu AND p.idpesanan = dp.idpesanan AND p.idpesanan = 2;
7.MENAMPILKAN IDPESANAN YANG MEMESAN MENU TERTENTU VERSE 1 SELECT dp.idpesanan AS Id_Pelanggan,m.nama AS Nama_Menu FROM detilpesanan dp JOIN menu m ON dp.idmenu = m.idmenu AND m.idmenu = 'MN-03'; VERSE 2 SELECT dp.idpesanan AS Id_Pelanggan,m.nama AS Nama_Menu FROM detilpesanan dp,menu m WHERE dp.idmenu = m.idmenu AND m.idmenu = 'MN-03';
8.MENAMPILKAN JUMLAH KALI PEMESANAN MENU TERTENTU DALAM 1 HARI VERSE 1 SELECT m.nama,dp.idmenu,SUM(dp.jumlah) AS JUMLAH_PEMESANAN FROM menu m JOIN detilpesanan dp JOIN pakaimeja pm ON dp.idmenu = m.idmenu AND dp.IdPesanan = pm.IdPesanan AND pm.jam_pesan BETWEEN '2011-07-02 10:00:00' AND '2011-07-02 22:00:00' AND dp.idmenu = 'MN-01' GROUP BY m.nama,dp.idmenu; VERSE 2 SELECT m.nama,dp.idmenu,SUM(dp.jumlah) AS JUMLAH_PEMESANAN FROM menu m, detilpesanan dp, pakaimeja pm WHERE dp.idmenu = m.idmenu AND dp.IdPesanan = pm.IdPesanan AND pm.jam_pesan BETWEEN '2011-07-02 10:00:00' AND '2011-07-02 22:00:00' AND dp.idmenu = 'MN-01' GROUP BY m.nama,dp.idmenu
Untuk Detil Jumlah Pemesanan Masing-Masing Pelanggan SELECT dp.IdPesanan,m.nama,dp.idmenu,pm.Jam_Pesan,SUM(dp.jumlah) AS JUMLAH_PEMESANAN FROM menu m, detilpesanan dp, pakaimeja pm WHERE dp.idmenu = m.idmenu AND dp.IdPesanan = pm.IdPesanan AND pm.jam_pesan BETWEEN '2011-07-02 10:00:00' AND '2011-07-02 22:00:00' AND dp.idmenu = 'MN-01' GROUP BY m.nama,dp.idmenu, dp.IdPesanan,pm.Jam_Pesan;
9.MENAMPILKAN MENU YANG BELUM PERNAH DIPESAN SELECT m.idmenu,m.nama FROM menu m WHERE m.idmenu NOT IN (SELECT DISTINCT(dp.idmenu) FROM detilpesanan dp);
OUTPUT EMPTY (TELEH DIPESAN SEMUA)
10.MENAMPILKAN PELANGGAN DENGAN PEMBAYARAN TERBESAR SELECT dp.idpesanan,SUM(m.harga*dp.jumlah) AS BIAYA_TERBESAR FROM menu m,detilpesanan dp WHERE m.idmenu = dp.idmenu GROUP BY dp.idpesanan HAVING BIAYA_TERBESAR = (SELECT MAX(MAKSIMAL.TOTAL) AS Biaya_Maksimum FROM (SELECT dp.idpesanan,SUM(m.harga*dp.jumlah) AS TOTAL detilpesanan dp ,menu m WHERE m.idmenu = dp.idmenu GROUP BY dp.idpesanan) AS MAKSIMAL);
12. MENAMPILKAN MEJA YANG PERNAH DIGUNAKAN (NAMUN DAPAT DIPAKAI LAGI) VERSE 1 SELECT m.idMeja,m.no_meja FROM meja m JOIN pakaimeja pm ON m.idMeja = pm.idMeja AND pm.jam_bayar IS NOT NULL
FROM
VERSE 2 SELECT m.idMeja,m.no_meja FROM meja m, pakaimeja pm WHERE m.idMeja=pm.idMeja AND pm.jam_bayar IS NOT NULL
13. Menampilkan Waktu Makan Beserta Jumlah Biaya SELECT p.idpesanan, SUM(dp.jumlah*m.harga) AS TOTAL,TIMEDIFF(pm.jam_bayar,pm.jam_pesan) AS Lama_Waktu_Makan FROM pesanan p,menu m,detilpesanan dp,pakaimeja pm WHERE dp.idmenu = m.idmenu AND p.idpesanan = dp.idpesanan AND pm.idpesanan = dp.idpesanan GROUP BY p.idpesanan;