Question: - - Create Appointments table CREATE TABLE Appointments ( AppointmentID INT PRIMARY KEY, PatientID INT, DoctorID INT, AppointmentDate DATE, AppointmentTime TIME, AppointmentDuration INT, FOREIGN KEY

-- Create Appointments table
CREATE TABLE Appointments (
AppointmentID INT PRIMARY KEY,
PatientID INT,
DoctorID INT,
AppointmentDate DATE,
AppointmentTime TIME,
AppointmentDuration INT,
FOREIGN KEY (PatientID) REFERENCES Patient(PatientID),
FOREIGN KEY (DoctorID) REFERENCES Doctor(DoctorID)
);
-- Insert data into tables
INSERT INTO Patient (PatientID, PatientName, PatientSurname, PatientDOB)
VALUES
(1, 'Debbie', 'Theart', '1980-03-17'),
(2, 'Thomas', 'Duncan', '1976-08-12');
INSERT INTO Doctor (DoctorID, DoctorName, DoctorSurname)
VALUES
(1, 'Zintle', 'Nukani'),
(2, 'Ravi', 'Maharaj');
INSERT INTO Appointments (AppointmentID, PatientID, DoctorID, AppointmentDate, AppointmentTime, AppointmentDuration)
VALUES
(1,1,1,'2024-01-15','09:00:00',15),
(2,1,2,'2024-01-18','15:00:00',30),
(3,2,2,'2024-01-20','10:00:00',15),
(4,1,1,'2024-01-21','11:00:00',15);
-- Q.3.5: Display all appointments between 2024-01-16 and 2024-01-20(inclusive)
SELECT *
FROM Appointments
WHERE AppointmentDate BETWEEN '2024-01-16' AND '2024-01-20';
-- Q.3.6: Display names and surnames of patients with total number of appointments
SELECT p.PatientName, p.PatientSurname, COUNT(a.AppointmentID) AS TotalAppointments
FROM Patient p
JOIN Appointments a ON p.PatientID = a.PatientID
GROUP BY p.PatientName, p.PatientSurname
ORDER BY TotalAppointments DESC;
-- Q.3.7: Display all appointments with doctor and patient details
SELECT a.AppointmentDate, a.AppointmentTime, d.DoctorName, d.DoctorSurname, p.PatientName, p.PatientSurname
FROM Appointments a
JOIN Doctor d ON a.DoctorID = d.DoctorID
JOIN Patient p ON a.PatientID = p.PatientID
ORDER BY a.AppointmentDate DESC;
-- Q.3.8: Create view for patients with appointments with Doctor ID 2
CREATE VIEW PatientsWithDoctor2 AS
SELECT p.PatientName, p.PatientSurname
FROM Patient p
JOIN Appointments a ON p.PatientID = a.PatientID
WHERE a.DoctorID =2
ORDER BY p.PatientName, p.PatientSurname ASC;
-- Create stored procedure get_appointments
DELIMITER //
CREATE PROCEDURE get_appointments(IN appointment_date DATE)
BEGIN
SELECT a.AppointmentTime, a.AppointmentDuration, d.DoctorName, d.DoctorSurname, p.PatientName, p.PatientSurname
FROM Appointments a
JOIN Doctor d ON a.DoctorID = d.DoctorID
JOIN Patient p ON a.PatientID = p.PatientID
WHERE a.AppointmentDate = appointment_date
ORDER BY a.AppointmentTime ASC;
END//
DELIMITER ;

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!