一个表中每行的PostgreSQL连接另一个表中的所有行

时间:2015-02-19 08:17:00

标签: sql postgresql select join left-join

在表格A中,我的日期从2014-01-012014-12-31

 action_date
 2014-01-01
 2014-01-02
 2014-01-03
 ...
 2014-12-31

在表格B中,我有一些信息,如

id name action_date deletion_date
1  nik  2013-01-01  2014-02-03
2  tom  2014-06-02  2014-06-30
3  lola 2013-12-30  2014-01-01

如果A

,我想将B表中的行连接到每个activation_date<=action_date<=deletion_date表格行

e.g。

 action_date id name action_date deletion_date
 2014-01-01  1  nik  2013-01-01  2014-02-03
 2014-01-01  3  lola 2013-12-30  2014-01-01
 2014-01-02  1  nik  2013-01-01  2014-02-03
 2014-01-03  1  nik  2013-01-01  2014-02-03
   [...]
 2014-02-03  1  nik  2013-01-01  2014-02-03

 2014-06-02  2  tom  2014-06-02  2014-06-30
 2014-06-03  2  tom  2014-06-02  2014-06-30
   [...]
 2014-06-03  2  tom  2014-06-02  2014-06-30

我试图在没有on语句的情况下使用left join,只在where where条件下使用。不幸的是,它没有用。

1 个答案:

答案 0 :(得分:2)

您可以在between条件中使用join运算符:

SELECT a.action_date, b.*
FROM   b
JOIN   a ON a.action_date BETWEEN b.activation_date AND b.deletion_date