【发布时间】:2015-07-28 13:02:48
【问题描述】:
我正在尝试根据两个日期比较 SQL 表中的两列。该表已设置,因此表 A 中的每个人都有另一个表 B 的外键,每个人在表 B 中可以有多个条目。表 B 中的每个条目都包含一个开始日期和结束日期,我试图抓住每个在表 B 中有重叠的人,因此其中一个条目的开始日期在任何其他条目的结束日期之前。
所以表 A 中的 John Doe 在表 B 中有两个条目,其中条目 1 的开始日期是 2015 年 4 月 5 日,结束日期是 2016 年 4 月 6 日,第二个条目是 2016 年 1 月 10 日,结束日期是 2017 年 1 月 10 日,所以我会想要将此人包含在我的结果集中。
但是,表 A 中的 Jane Doe 作为表 B 中的两个条目
Entry 1: SD April 10th 2014 End April 10th 2015
Entry 2: SD May 11th 2015 End May 11th 2016
所以我不想将 Jane Doe 包含在我的结果集中。
我想我需要在 select 语句的 where 部分使用两个嵌套的 for 循环,根据我是否要包含此人来回翻转变量。
类似的东西
Select * from A
where
(reset variable
for b in
(select * from b.id = A.b_id); loop
for btwo in
(select * from b.id = A.b_id); loop
// set variable based on start / end date
// if I want to include set var = 1 else 0
end loop;
end loop;)
variable = 1;
【问题讨论】: