【发布时间】:2018-06-06 15:37:02
【问题描述】:
我有三个表,每个表都有一个开始和结束日期。
e.g.
Table 1
start_date | end_date | valueToJoin1 | ValueToJoin2 | fruit
2000-01-01 2000-02-01 XXXX YYYY apple
2000-01-01 2000-02-01 XXXX BBBB apple
Table 2
start_date | end_date | valueToJoin1 | ValueToJoin2 | vegetable
2000-01-15 2000-12-31 XXXX YYYY tomato
Table 3
start_date | end_date | car
2000-01-05 2000-10-31 porsche
2000-02-02 2000-10-31 mazda
我想要一个查询,该查询根据它们重叠的最大可能开始日期和它们重叠的最小可能结束日期列出相交表的行。我还需要第三张桌子的开始和结束日期。
表格需要通过某些值连接,例如XXXX 必须在两个表上匹配。
我也不想要任何重复或不必要的信息。上面的输出应该只有一行:
max_start_date | max_end_date | table_3_start_date | table_3_end_date | joinedValue1 | joinedValue2 | vegetable | fruit | car
2000-01-15 2000-02-01 2000-01-05 2000-10-31 XXXX YYYY tomato apple porsche
【问题讨论】:
-
两列连接的表是否名为
valuetojoin?还是只有一列?如果这些是两列,最好使用专有名称而不是混淆它们超出可用性。表 3 是如何连接到其他表的?开始/结束日期应该是加入的一部分吗?你能提供一个简单的带有create table和insert语句的测试设置吗? -
两者都是。我已经更新了问题
-
table3 怎么样?那应该如何连接到其他表?
-
仅按重叠的日期范围...
-
而其他仅由连接列或连接列和重叠日期范围?
标签: sql postgresql