时间段 SQL 视图

Time period SQL view

我正在尝试在我正在使用的两个表上创建 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)
);

我正在尝试创建的视图列出了所有最大时间段(合适的日期、合适的开始、合适的结束),在此期间无法进行进一步的约会(还要考虑医生的可用性)。

非常感谢任何帮助,谢谢。

如果约会持续时间不变,这应该有效。您可以通过使用 inner join 而不是 minus 重写来优化它。另外,请记住将可用性 table 置于减号之上。

select doctor
, avl_date
, avl_start
, avl_end
from availability
minus
select doctor
, apt_date
, apt_start
, apt_end
from appointments