【问题标题】:Microsoft Access Joining two tables with Date RangesMicrosoft Access 使用日期范围连接两个表
【发布时间】:2018-02-08 16:21:26
【问题描述】:

我有两个包含日期范围的表格,我想加入这些表格。表 1 如下所示:

Table 1:
----------------------------------------------------------------------------------
|    ID     |    Place    |     Description     |    Date 1    |     Date 2      |
----------------------------------------------------------------------------------
|         1 | Place 1     | Description 1       |     1/1/1988 |      12/31/1993 |
----------------------------------------------------------------------------------
|         2 | Place 1     | Description 2       |     1/1/1994 |      12/31/1994 |
----------------------------------------------------------------------------------
|         3 | Place 1     | Description 3       |     1/1/1995 |        2/8/2018 |
----------------------------------------------------------------------------------

表 2 如下所示:

Table 2:
---------------------------------------------------------------------------------
|    ID     |     Equipment      |    Place    |    Date 1    |     Date 2      |
---------------------------------------------------------------------------------
|         1 | Item 1             | Place 1     |     1/1/1990 |      12/31/1995 |
---------------------------------------------------------------------------------
|         2 | Item 2             | Place 1     |     1/1/1996 |        2/8/2018 |
---------------------------------------------------------------------------------

我希望结果如下所示:

Results:
------------------------------------------------------------------------------------------
|     Equipment      |    Place    |    Description     |    Date 1    |     Date 2      |
------------------------------------------------------------------------------------------
| Item 1             | Place 1     | Description 1      |     1/1/1990 |      12/31/1993 |
------------------------------------------------------------------------------------------
| Item 1             | Place 1     | Description 2      |     1/1/1994 |      12/31/1994 |
------------------------------------------------------------------------------------------
| Item 1             | Place 1     | Description 3      |     1/1/1995 |      12/31/1995 |
------------------------------------------------------------------------------------------
| Item 2             | Place 1     | Description 3      |     1/1/1996 |        2/8/2018 |
------------------------------------------------------------------------------------------

在上面的示例中,我实际上是在尝试将“描述”添加到表 2。但是,表 1 中的“描述”与表 2 中的记录集的日期范围不同。

我正在努力想出一个查询,甚至是一组查询来生成所需的结果。任何推动都是正确的方向,非常感谢。

【问题讨论】:

  • 该输出背后的“逻辑”是什么?为什么第 2 项只有一条记录?
  • 1/1/1988 的第一个日期在输出中的什么位置?
  • @LeeMac 我真的只是想在表 2 上的日期之间查找信息。所以 1/1/1990 是表 2 上的最小日期。
  • @Gustav 项目 2 只有一条记录,因为在日期范围内只有一条适用的描述。所以对于第 2 项,它的日期范围在 1996 年 1 月 1 日到 2018 年 2 月 8 日之间。此时间范围内唯一适用的描述是“描述 3”。希望这是有道理的。

标签: database ms-access join


【解决方案1】:

您将需要一个主要从表 2 中提取的查询,然后对表 1 进行具有多个条件的双向联接。第一个联接将就位, 第二个加入也需要加入日期范围:

粗略的 SQL 将是(免责声明:未经测试):

SELECT 
    T2.[Description], T2.[Place], T1.[Description], etc..
FROM
    T2
INNER JOIN T1 ON 
    T1.[Place] = T2.[Place]
AND 
    (
       T2.[Date 1] BETWEEN T1.[Date 1] AND T1.[Date 2]
       AND
       T2.[Date 2] BETWEEN T1.[Date 1] AND T1.[Date 2]
    )

【讨论】:

  • 感谢您将我推向正确的方向。我将尝试解决这个问题,并会尽快发布更新。
猜你喜欢
  • 2018-12-19
  • 2017-08-17
  • 2020-01-07
  • 1970-01-01
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 2020-11-12
相关资源
最近更新 更多