【发布时间】:2018-01-25 03:47:04
【问题描述】:
我正在尝试查询 Postgres 数据库以检索特定客户的记录,这些记录来自与当天相邻的日期。
例如:
如果今天是星期三,它将拉取星期一和星期二的记录(如果存在)。
如果今天是星期三,如果星期二没有记录,则不会从星期一拉记录。
如果拉取上周三的记录,则拉取周二和周四(如果存在)。
数据库目前由一个 Dates 表构成,其中包含:
Id----------|------DateTime--------
并且Id与Customers表有外键关系,包含:
CustomerId-------|-----DateId(fk)-----|----other columns.....
我曾想过简单地查询数据库是否在查询日期之前和之后存在日期(如果存在则提取该记录),然后循环以便成功将在之前或之后查询下一个日期.....但这似乎非常低效。
有没有更好的方法来获取这些记录?
编辑: 示例日期表:
Id | DateTime
1 | '2018-01-23 16:19:17.600305'
2 | '2018-01-24 00:03:11.213492'
3 | '2018-01-25 03:10:14.911771'
示例客户表:
Id | DateId | CustomerId | Location1 | Location2 | Transport
66 | 2 | 2 | Market | Library | Car
67 | 2 | 3 | Bookstore | Library | Car
68 | 3 | 3 | Pool | Town | Car
69 | 3 | 3 | Pool | Town | Bus
【问题讨论】:
-
样本数据真的很有帮助。一个客户在某一天可以有多个记录吗?有时间成分吗?
-
编辑问题
-
那么,在您的问题中,“当天”是查询的参数,还是今天?虽然我不确定我是否理解了整个问题,但似乎这可以表示为一个复杂的 WHERE 子句,其中几个分离子句涵盖了不同的场景。这不漂亮,但那行不通吗?
标签: sql postgresql