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