0% found this document useful (0 votes)
5 views

Database Lab 11

Uploaded by

Priyadashwini
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Database Lab 11

Uploaded by

Priyadashwini
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

11.

3 Exercises
1. Vacation Package Database System
a)
Equijoin
RA
σ TYPE = 'Family A' ∨ TYPE = 'Family B' (SPECIAL_GIFT ✕ VACATION_PACKAGE)

SQL
SELECT SG.NAME, SG.GIFT_NO, VP.TYPE
FROM SPECIAL_GIFT SG, VACATION_PACKAGE VP
WHERE SG.GIFT_NO = VP.GIFT_NO
AND (TYPE = 'Family A' OR TYPE = 'Family B');

Natural Join
RA
Π NAME, GIFT_NO, TYPE (σ TYPE = 'Family A' ∨ TYPE = 'Family B' (SPECIAL_GIFT ⨝
VACATION_PACKAGE))

SQL
SELECT NAME, GIFT_NO, TYPE
FROM SPECIAL_GIFT
NATURAL JOIN VACATION_PACKAGE
WHERE TYPE = 'Family A' OR TYPE = 'Family B';
Join…using
RA
Π NAME, GIFT_NO (σ TYPE = 'Family A' ∨ TYPE = 'Family B' (SPECIAL_GIFT)) ⨝ GIFT_NO (Π TYPE
(VACATION_PACKAGE))

SQL
SELECT NAME, GIFT_NO, TYPE
FROM SPECIAL_GIFT JOIN VACATION_PACKAGE
USING (GIFT_NO)
WHERE TYPE = 'Family A' OR TYPE = 'Family B';
Join…on
RA
Π NAME, GIFT_NO (σ TYPE = 'Family A' ∨ TYPE = 'Family B' (SPECIAL_GIFT)) ⨝ SG.GIFT_NO = VP.GIFT_NO (Π
TYPE (VACATION_PACKAGE))

SQL
SELECT SG.NAME, SG.GIFT_NO, VP.TYPE
FROM SPECIAL_GIFT SG
JOIN VACATION_PACKAGE VP
ON SG.GIFT_NO = VP.GIFT_NO
WHERE TYPE = 'Family A' OR TYPE = 'Family B';
b)
RA
Π GUEST_NO, FULLNAME (GUEST) ⨝ G.GUEST_NO = PR.GUEST_NO (R (“TOTAL NUMBER OF
RESERVATIONS”) (σ COUNT PR.GUEST_NO > 2)  COUNT PR.GUEST_NO
(PACKAGE_RESERVATION))

SQL
SELECT G.GUEST_NO,
G.FULLNAME,
COUNT(PR.GUEST_NO) AS "TOTAL NUMBER OF RESERVATIONS"
FROM PACKAGE_RESERVATION PR
JOIN GUEST G
ON G.GUEST_NO = PR.GUEST_NO
GROUP BY G.GUEST_NO, G.FULLNAME
HAVING COUNT(PR.GUEST_NO) > 2;
c) 20th September 2022
RA
Π REVIEW_NO, REVIEW_DATE, RESERVATION_NO, RATING, COMMENTS
(σ RESERVATION_NO (A) (REVIEW)) ⨝ R.RESERVATION_NO = RL.RESERVATION_NO
(RESERVATION_LINE)
A: REVIEW ⨝ R.RESERVATION_NO = PR.RESERVATION_NO Π RESERVATION_NO (σ RESERVATION_DATE = '09-
20-2022' (PACKAGE_RESERVATION))

SQL
SELECT R.REVIEW_NO, R.REVIEW_DATE, R.RESERVATION_NO, R.RATING,
R.COMMENTS
FROM REVIEW R
JOIN RESERVATION_LINE RL
ON R.RESERVATION_NO = RL.RESERVATION_NO
WHERE R.RESERVATION_NO IN
(
SELECT R.RESERVATION_NO
FROM REVIEW R
JOIN PACKAGE_RESERVATION PR
ON R.RESERVATION_NO = PR.RESERVATION_NO
WHERE PR.RESERVATION_DATE = '09-20-2022'
);
d) nested
RA
(σ GUEST_NO  (A) (PACKAGE_RESERVATION)) ⨝ CS.STAFF_NO = PR.STAFF_NO
Π FULLNAME, GENDER, MONTHLY_SALARY_RM (COMPANY_STAFF)

A: PACKAGE_RESERVATION ⨝ G.GUEST_NO = PR.GUEST_NO Π GUEST_NO (σ ADDRESS


like %Selangor%') (GUEST)

SQL
SELECT CS.FULLNAME, CS.GENDER, CS.MONTHLY_SALARY_RM
FROM COMPANY_STAFF CS
JOIN PACKAGE_RESERVATION PR
ON CS.STAFF_NO = PR.STAFF_NO
WHERE PR.GUEST_NO IN
(
SELECT PR.GUEST_NO
FROM GUEST G
JOIN PACKAGE_RESERVATION PR
ON G.GUEST_NO = PR.GUEST_NO
WHERE G.ADDRESS LIKE '%Selangor%'
);
e)
RA
(σ RESERVATION_NO  (A) (PACKAGE_RESERVATION)) ⨝ G.GUEST_NO = PR.GUEST_NO Π
GUEST_NO, FULLNAME, GENDER, ADDRESS, PHONE_NO, CARD_NO, CARD_TYPE, CARD_BANK, CARD_EXPIRY_DATE
(GUEST)
A: (σ PACKAGE_NO  (B) (RESERVATION_LINE)) ⨝ RL.RESERVATION_NO = PR.RESERVATION_NO Π
RESERVATION_NO (PACKAGE_RESERVATION)
B: (σ TYPE = 'Business') (VACATION_PACKAGE) ⨝ VP.PACKAGE_NO = RL.PACKAGE_NO Π PACKAGE_NO
(RESERVATION_LINE)
SQL
SELECT G.GUEST_NO, G.FULLNAME, G.GENDER, G.ADDRESS, G.PHONE_NO,
G.CARD_NO, G.CARD_TYPE, G.CARD_BANK, G.CARD_EXPIRY_DATE
FROM GUEST G
JOIN PACKAGE_RESERVATION PR
ON G.GUEST_NO = PR.GUEST_NO
WHERE PR.RESERVATION_NO IN
(
SELECT PR.RESERVATION_NO
FROM RESERVATION_LINE RL
JOIN PACKAGE_RESERVATION PR
ON RL.RESERVATION_NO = PR.RESERVATION_NO
WHERE RL.PACKAGE_NO IN
(
SELECT RL.PACKAGE_NO
FROM VACATION_PACKAGE VP
JOIN RESERVATION_LINE RL
ON VP.PACKAGE_NO = RL.PACKAGE_NO
WHERE VP.TYPE = 'Business'
)
);
f)
RA
(σ RESERVATION_NO  (A) (RESERVATION_LINE)) ⨝ VP.PACKAGE_NO = RL.PACKAGE_NO
Π PACKAGE_NO, TYPE, PRICE_PER_DAY_RM, ROOM_TYPE, GIFT_NO (VACATION_PACKAGE)

A: (σ RESERVATION_DATE >= '08-01-2022' AND RESERVATION_DATE <= '08-31-2022')


(PACKAGE_RESERVATION) ⨝ RL.RESERVATION_NO = PR.RESERVATION_NO Π RESERVATION_NO
(RESERVATION_LINE)
SQL
SELECT DISTINCT VP.PACKAGE_NO, VP.TYPE, VP.PRICE_PER_DAY_RM,
VP.ROOM_TYPE, VP.GIFT_NO
FROM VACATION_PACKAGE VP
JOIN RESERVATION_LINE RL
ON VP.PACKAGE_NO = RL.PACKAGE_NO
WHERE RL.RESERVATION_NO IN
(
SELECT RL.RESERVATION_NO
FROM PACKAGE_RESERVATION PR
JOIN RESERVATION_LINE RL
ON RL.RESERVATION_NO = PR.RESERVATION_NO
WHERE PR.RESERVATION_DATE >= '08-01-2022' AND PR.RESERVATION_DATE
<= '08-31-2022'
);
g) Ahmad Faiz bin Azahar
RA
(σ RESERVATION_NO  (A) (RESERVATION_LINE)) ⨝ VP.PACKAGE_NO = RL.PACKAGE_NO Π
PACKAGE_NO, TYPE, PRICE_PER_DAY_RM, ROOM_TYPE, GIFT_NO (VACATION_PACKAGE)
A: (σ GUEST_NO  (B) (PACKAGE_RESERVATION)) ⨝ RL.RESERVATION_NO = PR.RESERVATION_NO
Π RESERVATION_NO (RESERVATION_LINE)
B: (σ FULLNAME = 'Ahmad Faiz bin Azahar') (GUEST) ⨝ PR.GUEST_NO = G.GUEST_NO Π GUEST_NO
(RESERVATION_LINE)

SQL
SELECT DISTINCT VP.PACKAGE_NO, VP.TYPE, VP.PRICE_PER_DAY_RM,
VP.ROOM_TYPE, VP.GIFT_NO
FROM VACATION_PACKAGE VP
JOIN RESERVATION_LINE RL
ON VP.PACKAGE_NO = RL.PACKAGE_NO
WHERE RL.RESERVATION_NO IN
(
SELECT RL.RESERVATION_NO
FROM PACKAGE_RESERVATION PR
JOIN RESERVATION_LINE RL
ON RL.RESERVATION_NO = PR.RESERVATION_NO
WHERE PR.GUEST_NO IN
(
SELECT PR.GUEST_NO
FROM PACKAGE_RESERVATION PR
JOIN GUEST G
ON PR.GUEST_NO = G.GUEST_NO
WHERE G.FULLNAME = 'Ahmad Faiz bin Azahar'
)
);
If change 'Ahmad Faiz bin Azahar' to 'Nazmi bin Nizar'
2.
a) What is the customer’s name who booked a townhouse-type property in November 2018?
RA
σ B.BOOK_DATE >= '11-01-2018' ˄ B.BOOK_DATE <= '11-30-2018' ˄ P.PTYPE = 'Townhouse' (Π TYPE
(HS_CUSTOMER) ✕ HS_BOOKING ✕ HS_BOOKING_LINE ✕
HS_PROPERTY_FOR_RENT)

SQL
SELECT C.CNAME
FROM HS_CUSTOMER C, HS_BOOKING B, HS_BOOKING_LINE BL,
HS_PROPERTY_FOR_RENT P
WHERE (C.CNO = B.CNO AND B.BNO = BL.BNO AND BL.PNO = P.PNO)
AND (B.BOOK_DATE >= '11-01-2018' AND B.BOOK_DATE <= '11-30-2018')
AND P.PTYPE = 'Townhouse';

b) How many times has a customer named ZAINAB made a room booking? Display the
name of the customer and the number of bookings.
RA
Π CNAME (σ CNAME = 'ZAINAB' (HS_CUSTOMER)) ⨝ C.CNO = B.CNO (HS_BOOKING)

SQL
SELECT C.CNAME,
COUNT(B.CNO) AS "TOTAL NUMBER OF BOOKINGS"
FROM HS_CUSTOMER C
JOIN HS_BOOKING B
ON C.CNO = B.CNO
WHERE C.CNAME = 'ZAINAB';

c) What types of the property booked by customer named HALIM?


RA
σ C.CNAME = 'HALIM' (HS_CUSTOMER ✕ HS_BOOKING ✕ HS_BOOKING_LINE ✕ Π TYPE
(HS_PROPERTY_FOR_RENT))

SQL
SELECT P.TYPE
FROM HS_CUSTOMER C, HS_BOOKING B, HS_BOOKING_LINE BL,
HS_PROPERTY_FOR_RENT P
WHERE (C.CNO = B.CNO AND B.BNO = BL.BNO AND BL.PNO = P.PNO)
AND C.CNAME = 'HALIM';
3.
a) Retrieve the details of all products with their supplier. Display all attributes from the
product table and supplier_id from the supply table.
RA
Π PRODUCT_ID, PRODUCT_NAME, PRODUCT_TYPE, PRICE (PRODUCT) ✕
Π SUPPLIER_ID (SUPPLY) ✕ Π SUPPLIER_NAME, SUPPLIER_LOCATION (SUPPLIER)

SQL
SELECT P.PRODUCT_ID, P.PRODUCT_NAME, P.PRODUCT_TYPE, P.PRICE,
S.SUPPLIER_ID, SR.SUPPLIER_NAME, SR.SUPPLIER_LOCATION
FROM PRODUCT P, SUPPLY S, SUPPLIER SR
WHERE P.PRODUCT_ID = S.PRODUCT_ID AND SR.SUPPLIER_ID = S.SUPPLIER_ID;

b) Which supplier supplied a product with a price less than RM4.2? Display the
product_type, supplier name, and supplier location in your result.
RA
σ P.PRICE < 4.2 (Π PRODUCT_TYPE (PRODUCT) ✕ (SUPPLY) ✕ Π SUPPLIER_NAME, SUPPLIER_LOCATION
(SUPPLIER))

SQL
SELECT P.PRODUCT_TYPE, SR.SUPPLIER_NAME, SR.SUPPLIER_LOCATION
FROM PRODUCT P, SUPPLY S, SUPPLIER SR
WHERE (P.PRODUCT_ID = S.PRODUCT_ID AND SR.SUPPLIER_ID =
S.SUPPLIER_ID)
AND P.PRICE < 4.2;

c) Retrieve the name of the product supplied before the date of 18 April 2014.
RA
σ S.SUPPLY_DATE < '04/18/2014' (Π PRODUCT_NAME (PRODUCT) ✕ SUPPLY ✕ SUPPLIER)

SQL
SELECT P.PRODUCT_NAME
FROM PRODUCT P, SUPPLY S, SUPPLIER SR
WHERE (P.PRODUCT_ID = S.PRODUCT_ID AND SR.SUPPLIER_ID =
S.SUPPLIER_ID)
AND S.SUPPLY_DATE < '04/18/2014';
d) Retrieve the supplier name, and supply date of the supplier who supplied DURIAN.
RA
σ P.PRODUCT_NAME = 'DURIAN' (PRODUCT ✕ Π SUPPLY_DATE (SUPPLY) ✕ Π SUPPLIER_NAME
(SUPPLIER))

SQL
SELECT SR.SUPPLIER_NAME, S.SUPPLY_DATE
FROM PRODUCT P, SUPPLY S, SUPPLIER SR
WHERE (P.PRODUCT_ID = S.PRODUCT_ID AND SR.SUPPLIER_ID =
S.SUPPLIER_ID)
AND P.PRODUCT_NAME = 'DURIAN';

You might also like