You are on page 1of 7

DATABASE V1 LAB

MID
F2019266302
Talha Ahmad Bin Shafqat

Question # 1
CREATE DATABASE mid;
CREATE TABLE `booking` (
`hotelNo` int(11) NOT NULL,
`guestNo` int(11) NOT NULL,
`dateFrom` date NOT NULL,
`dateTo` date NOT NULL,
`roomNo` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `guest` (


`guestNo` int(11) NOT NULL,
`guestName` varchar(255) NOT NULL,
`guestAddress` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `hotel` (


`hotelNo` int(11) NOT NULL,
`hotelName` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE `room` (
`roomNo` int(11) NOT NULL,
`hotelNo` int(11) NOT NULL,
`type` varchar(255) NOT NULL,
`price` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

ALTER TABLE `booking`


ADD PRIMARY KEY (`hotelNo`);

ALTER TABLE `guest`


ADD PRIMARY KEY (`guestNo`);

ALTER TABLE `hotel`


ADD PRIMARY KEY (`hotelNo`);

ALTER TABLE `room`


ADD PRIMARY KEY (`roomNo`);

ALTER TABLE `booking`


MODIFY `hotelNo` int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE `guest`


MODIFY `guestNo` int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE `hotel`


MODIFY `hotelNo` int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE `room`


MODIFY `roomNo` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;

Question # 2

1) List the price and type of all rooms at the Grosvenor Hotel.

SELECT price, type FROM Room

WHERE hotelNo =

(SELECT hotelNo FROM Hotel WHERE hotelName = ‘Grosvenor Hotel’);

2) List all guests currently staying at the Grosvenor Hotel.


SELECT * FROM Guest
WHERE guestNo =
(SELECT guestNo FROM Booking
WHERE dateFrom <= CURRENT_DATE AND
dateTo >= CURRENT_DATE AND
hotelNo =
(SELECT hotelNo FROM Hotel WHERE hotelName = ‘Grosvenor Hotel’));

3) List the details of all rooms at the Grosvenor Hotel, including the name of the guest
staying in the room, if the room is occupied.
SELECT r.* FROM Room r LEFT JOIN
(SELECT g.guestName, h.hotelNo, b.roomNo FROM Guest g, Booking b, Hotel h
WHERE g.guestNo = b.guestNo AND b.hotelNo = h.hotelNo AND
hotelName= ‘Grosvenor Hotel’ AND
dateFrom <= CURRENT_DATE AND
dateTo >= CURRENT_DATE) AS XXX
ON r.hotelNo = XXX.hotelNo AND r.roomNo = XXX.roomNo;

4) List the rooms that are currently unoccupied at the Grosvenor Hotel.

SELECT *FROM Room


WHERE roomNo NOR IN
(SELECT roomNo
FROM Booking, hotel
WHERE (dateFrom <= CURRENT_DATE AND
dateTo >= CURRENT_DATE) AND
hotelNo = hotelNo AND hotelName = “Grosvenor Hotel’);

5) What is the lost income from unoccupied rooms at the Grosvenor Hotel?
SELECT SUM(price)
FROM Room
WHERE roomNo NOT IN
(SELECT roomNo
FROM Booking, hotel
WHERE (dateFrom <= CURRENT_DATE AND
dateTo >= CURRENT_DATE) AND
hotelNo =hotelNo AND hotelName = Grosvenor Hotel’);

6) List the number of rooms in each hotel.


SELECT hotelNo, COUNT(roomNo) AS count FROM Room
GROUP BY hotelNo;

7) List the number of rooms in each hotel in London.


SELECT hotelNo, COUNT(roomNo) AS count
FROM Room, Hotel
WHERE hotelNo = hotelNo AND city = ‘London’
GROUP BY hotelNO;
8) What is the most commonlybooked room type foreach hotel in London?
SELECT MAX(X)
FROM (SELECT type, COUNT(type) AS X
FROM Booking, Hotel, Room
WHERE roomNo = roomNo AND hotelNo = hotelNo ANDcity = ‘London’
GROUP BY hotelNo;

9) What is the lost income from unoccupied rooms at each hotel today?
SELECT r.hotelno, SUM(price)
FROM room r
WHERE NOT EXIST
(SELECT *
FROM booking b
WHERE
r.roomno = b.roomno AND
r.hotelno = b.hotelno AND
(datefrom <= ‘SYSTEM DATE’ AND
dateto >= ‘SYSTEM DATE’))
GROUP BY hotelno;

10) Update the price of all rooms by 5%

UPDATE room

SET price = price*1.05;

11) List the names and cities of all guests.


12) List the price and type of all rooms at the Grosvenor Hotel.

SELECT price, type FROM Room

WHERE hotelNo =

(SELECT hotelNo FROM Hotel WHERE hotelName = ‘Grosvenor Hotel’);

13) List all guests currently staying at the Grosvenor Hotel.


SELECT * FROM Guest
WHERE guestNo =
(SELECT guestNo FROM Booking
WHERE dateFrom <= CURRENT_DATE AND
dateTo >= CURRENT_DATE AND
hotelNo =
(SELECT hotelNo FROM Hotel WHERE hotelName = ‘Grosvenor Hotel’));

14) List the details of all rooms at the Grosvenor Hotel, including the name of the guest
staying in the room, if the room is occupied.
SELECT r.* FROM Room r LEFT JOIN
(SELECT g.guestName, h.hotelNo, b.roomNo FROM Guest g, Booking b, Hotel h
WHERE g.guestNo = b.guestNo AND b.hotelNo = h.hotelNo AND
hotelName= ‘Grosvenor Hotel’ AND
dateFrom <= CURRENT_DATE AND
dateTo >= CURRENT_DATE) AS XXX
ON r.hotelNo = XXX.hotelNo AND r.roomNo = XXX.roomNo;
15) List the guest details (guestNo, guestName, and guestAddress) of all guests staying at
the Grosvenor Hotel.
SELECT (guestno, guestname, guestaddress)

FROM guest, booking, hotel

WHERE guest.guestno =booking.guestno AND

hotel.hotelno = booking.hotelno AND

(datefrom <= ‘SYSTEM DATE’

AND dateto >= ‘SYSTEM DATE’) AND

hotelname = ‘Grosvenor’;

You might also like