我在使用连接条件时遇到了问题,无法得到唯一的记录。我的查询结果返回笛卡尔积,我不知道如何停止它。我的表格如下:
Table A
ID_1 Start End Name
137 1:00 2:00 Galia
137 2:00 3:00 Est
137 3:00 4:00 Omnia
137 4:00 5:00 Divisa
137 5:00 6:00 Partes
137 6:00 7:00 Tres
137 7:00 8:00 Quarum
137 8:00 9:00 Unam
137 9:00 10:00 Incolunt
Table B
ID_1Time_1 Time_2
137 3:10 3:57
我的查询将是:
select A.*, B.Time_1, B.Time_2
from Table_A A
inner join
Table_B B
on
A.ID_1 = B.ID_1 and B.Time_1<=A.End and B.Time_2 >= A.Start
我得到的结果看起来像这样:
ID_1Start End Name Time_1 Time_2
137 1:00 2:00 Galia 3:10 3:57
137 2:00 3:00 Est 3:10 3:57
137 3:00 4:00 Omnia 3:10 3:57
137 4:00 5:00 Divisa 3:10 3:57
137 5:00 6:00 Partes 3:10 3:57
137 6:00 7:00 Tres 3:10 3:57
137 7:00 8:00 Quarum 3:10 3:57
137 8:00 9:00 Unam 3:10 3:57
137 9:00 10:00 Incolunt3:10 3:57
看起来它正在给出两个表的笛卡尔积,这是有道理的,因为每个记录都满足三个条件。我想要的是只返回时间对应的记录,就像这样:
ID_1Start End Name Time_1 Time_2
137 3:00 4:00 Omnia 3:10 3:57
任何建议如何构建连接以实现此目的?如果可以使用Netezza功能的话,我正在使用Netezza数据库。谢谢。
3:57 >= 9:00
应该如何正确地为真? - Aprillion