问题描述
我正在尝试在我正在使用的两个表上创建 sql 视图:
CREATE TABLE availability
(
doctor varchar(20) NOT NULL,avl_date date NOT NULL,avl_start time NOT NULL,avl_end time NOT NULL,CONSTRAINT pk_availability PRIMARY KEY (doctor,avl_date)
);
和
CREATE TABLE appointments
(
patient varchar(20) NOT NULL,doctor varchar(20) NOT NULL,apt_date date NOT NULL,apt_start time NOT NULL,apt_end time NOT NULL,CONSTRAINT pk_appointments PRIMARY KEY (patient,apt_date)
);
我正在尝试创建的视图列出了所有最长的时间段(适当的日期、适当的开始、适当的结束),在这些时间段内不能再进行预约(还要考虑医生的可用性)。
非常感谢任何帮助,谢谢。
解决方法
如果约会持续时间不变,这应该有效。您可以通过使用内连接而不是减号重写来优化它。另外,请记住将可用性表放在减号上方。
select doctor,avl_date,avl_start,avl_end
from availability
minus
select doctor,apt_date,apt_start,apt_end
from appointments