Create Bus Ticket Booking Database
Create Bus Ticket Booking Database
GO
USE bus4;
GO
-- Create tables
);
);
BusID INT,
RouteID INT,
DepartureTime TIME,
ArrivalTime TIME,
);
);
ScheduleID INT,
PassengerID INT,
SeatNumber INT,
);
BookingID INT,
ScheduleID INT,
PassengerID INT,
BookingTime DATETIME2,
);
INSERT INTO Bus VALUES (1, 'BUS123', 40), (2, 'BUS456', 50), (3, 'BUS789', 45);
INSERT INTO Route VALUES (1, 'CityA', 'CityB', 300), (2, 'CityB', 'CityC', 200), (3, 'CityC', 'CityD', 150);
INSERT INTO Schedule VALUES (1, 1, 1, '08:00:00', '12:00:00'), (2, 2, 2, '14:00:00', '18:00:00'), (3, 3, 3,
'10:00:00', '13:00:00');
INSERT INTO Passenger VALUES (1, 'John Doe', 30, 'M'), (2, 'Jane Smith', 25, 'F'), (3, 'Alice Johnson',
28, 'F'), (4, 'Bob Brown', 35, 'M');
-- Create triggers
ON Booking
AFTER INSERT
AS
BEGIN
-- Update the capacity for each bus based on the inserted bookings
UPDATE Bus
SELECT COUNT(*)
FROM inserted i
WHERE Bus.BusID IN (
SELECT s.BusID
FROM inserted i
);
END;
GO
ON Booking
AFTER INSERT
AS
BEGIN
END;
GO
ON Booking
INSTEAD OF INSERT
AS
BEGIN
SET @availableSeats = (SELECT Capacity FROM Bus WHERE BusID = (SELECT BusID FROM Schedule
WHERE ScheduleID = @ScheduleID));
IF @availableSeats <= 0
BEGIN
END
ELSE
BEGIN
END
END;
GO
-- Queries
FROM Booking
WHERE Schedule.RouteID = 1;
-- 7. Query to get the number of available seats for each bus on a specific route
SELECT
Bus.BusNumber,
Route.Source,
Route.Destination,
FROM
Bus
JOIN
Schedule ON Bus.BusID = Schedule.BusID
JOIN
LEFT JOIN
WHERE
Route.RouteID = 1
GROUP BY
-- 8. Query to get the details of all passengers who have booked a ticket for a particular bus schedule
SELECT
Passenger.PassengerID,
Passenger.Name,
Passenger.Age,
Passenger.Gender,
Booking.SeatNumber
FROM
Passenger
JOIN
WHERE
Booking.ScheduleID = 1;
SELECT
Schedule.ScheduleID,
Route.Source,
Route.Destination,
Schedule.DepartureTime,
Schedule.ArrivalTime
FROM
Schedule
JOIN
JOIN
WHERE
Bus.BusNumber = 'BUS123';
-- 10. Query to get all bookings made within a specific date range
SELECT
Booking.BookingID,
Passenger.Name,
Schedule.DepartureTime,
Booking.BookingTime,
Booking.SeatNumber
FROM
Booking
JOIN
JOIN
WHERE