Цель:
У меня есть следующие реляционные схемы (первичный ключ жирный ):
больница ( больничный_ид )
пациент ( больничный_ид , пациент_ид , доктор_ид)
- ссылки на внешний ключ (больничный_ид, доктор_ид) доктор (больничный_ид, доктор_ид)
персонал ( больничный_ид, эид, имя)
- ссылки на внешний ключ (больничный_ид) больница
доктор ( больничный_ид, доктор )
- внешний ключ (больничный_ид, докторид) ссылки на персонал (больничный_ид, эид )
Мне нужно написать запрос
"Создайте представление, как найти имена врачей, которые заботятся о все пациенты в каждой (своей) больнице . "
То, что я пробовал до сих пор:
Я думаю использовать эту формулу :
SELECT * FROM R
WHERE x not in ( SELECT x FROM (
(SELECT x , y FROM (select y from S ) as p cross join
(select distinct x from R) as sp)
EXCEPT
(SELECT x , y FROM R) ) AS r );
с кортежем x = (doctor_id, hospital_id) y = (patient_id, hospital_id)
путем создания представлений:
create view doctor_patient as
select (d.doctor_id, d.hospital_id), (p.patient_id, p.hospital_id)
from doctor_employee d, patient p
where d.doctor_id = p.doctor_id
and d.hospital_id = p.hospital_id;
create view patient_hospital as
select (p.patient_id, p.hospital_id)
from patient p;
Однако это явно не работает с ошибкой:
ERROR: column "row" specified more than once
ERROR: column "row" has pseudo-type record
Кто-нибудь знает, как выполнить sh эту задачу? Пожалуйста, дайте мне знать, если для этого поста требуются дополнительные уточнения. Заранее спасибо!