SQL Exercise: Find patients without an appointment
SQL hospital Database: Exercise-21 with Solution
21. From the following tables, write a SQL query to find those patients who did not schedule an appointment. Return Patient name as "Patient", Physician name as "Physician" and Medication name as "Medication".
Sample table: patientssn | name | address | phone | insuranceid | pcp -----------+-------------------+--------------------+----------+-------------+----- 100000001 | John Smith | 42 Foobar Lane | 555-0256 | 68476213 | 1 100000002 | Grace Ritchie | 37 Snafu Drive | 555-0512 | 36546321 | 2 100000003 | Random J. Patient | 101 Omgbbq Street | 555-1204 | 65465421 | 2 100000004 | Dennis Doe | 1100 Foobaz Avenue | 555-2048 | 68421879 | 3Sample table: prescribes
physician | patient | medication | date | appointment | dose -----------+-----------+------------+---------------------+-------------+------ 1 | 100000001 | 1 | 2008-04-24 10:47:00 | 13216584 | 5 9 | 100000004 | 2 | 2008-04-27 10:53:00 | 86213939 | 10 9 | 100000004 | 2 | 2008-04-30 16:53:00 | | 5Sample table: physician
employeeid | name | position | ssn ------------+-------------------+------------------------------+----------- 1 | John Dorian | Staff Internist | 111111111 2 | Elliot Reid | Attending Physician | 222222222 3 | Christopher Turk | Surgical Attending Physician | 333333333 4 | Percival Cox | Senior Attending Physician | 444444444 5 | Bob Kelso | Head Chief of Medicine | 555555555 6 | Todd Quinlan | Surgical Attending Physician | 666666666 7 | John Wen | Surgical Attending Physician | 777777777 8 | Keith Dudemeister | MD Resident | 888888888 9 | Molly Clock | Attending Psychiatrist | 999999999Sample table: medication
code | name | brand | description ------+--------------+-----------------------+------------- 1 | Procrastin-X | X | N/A 2 | Thesisin | Foo Labs | N/A 3 | Awakin | Bar Laboratories | N/A 4 | Crescavitin | Baz Industries | N/A 5 | Melioraurin | Snafu Pharmaceuticals | N/A
Sample Solution:
-- SELECTing patient name, physician name, and medication name where appointment is NULL
SELECT t.name AS "Patient",
p.name AS "Physician",
m.name AS "Medication"
-- FROM patient table aliased as t
FROM patient t
-- INNER JOIN with prescribes table aliased as s based on patient's SSN
JOIN prescribes s ON s.patient = t.ssn
-- INNER JOIN with physician table aliased as p based on physician's employeeid
JOIN physician p ON s.physician = p.employeeid
-- INNER JOIN with medication table aliased as m based on medication code
JOIN medication m ON s.medication = m.code
-- WHERE clause filters results where appointment is NULL
WHERE s.appointment IS NULL;
Sample Output:
Patient | Physician | Medication ------------+-------------+------------ Dennis Doe | Molly Clock | Thesisin (1 row)
Explanation:
The said query in SQL that selects the names of patients, physicians, and medications for all prescriptions where the appointment is null.
The "JOIN" statement connects the tables 'patient' and 'prescribes' based on the columns ssn and patient, the tables 'prescribes' and 'physician' based on the physician and employeeid columns, and the tables 'prescribes' and 'medication' are based on the columns medication and code.
The "WHERE" clause filters the results to only include prescriptions where the appointment is null.
Practice Online
E R Diagram of Hospital Database:
Have another way to solve this solution? Contribute your code (and comments) through Disqus.
Previous SQL Exercise: Patients with their doctors and medications.
Next SQL Exercise: Count the number of available rooms in each block.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/sql-exercises/hospital-database-exercise/sql-exercise-hospital-database-21.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics