我正在使用PostgreSQL 8.4
。我有两个数据库,称为db1
和db2
。在db1
数据库中,我有表tbl1
,其中包含以下列(所有日期都为timestamp without timezone
格式):
date_from date_to
------------------- -------------------
2014-05-27 00:00:00 2014-05-27 23:59:59
2014-10-30 00:00:00 2014-10-30 23:59:59
2013-10-19 00:00:00 2013-10-19 23:59:59
2013-07-10 00:00:00 2013-07-10 23:59:59
2013-06-24 00:00:00 2013-06-24 23:59:59
2012-07-14 00:00:00 2012-07-14 23:59:59
2012-05-13 00:00:00 2012-05-13 23:59:59
2013-01-04 00:00:00 2013-01-04 23:59:59
2013-03-26 00:00:00 2013-03-26 23:59:59
................... ...................
在db2
数据库中,我有player
表,其中包含registration_date
和id
列PK
列,如下所示:
id registration_date
---- -------------------
1 2012-06-27 12:03:20
2 2012-05-13 04:46:18
3 2013-01-04 21:31:10
4 2013-03-26 10:17:02
... ...................
我需要获得包含以下内容的选择
date_from date_to player_count
------------------- ------------------- -------------------
2014-05-27 00:00:00 2014-05-27 23:59:59 ...
2014-10-30 00:00:00 2014-10-30 23:59:59
2013-10-19 00:00:00 2013-10-19 23:59:59
2013-07-10 00:00:00 2013-07-10 23:59:59
2013-06-24 00:00:00 2013-06-24 23:59:59
2012-07-14 00:00:00 2012-07-14 23:59:59
2012-05-13 00:00:00 2012-05-13 23:59:59
2013-01-04 00:00:00 2013-01-04 23:59:59
2013-03-26 00:00:00 2013-03-26 23:59:59
................... ...................
其中player_count
是从date_from
到date_to
的时间间隔内注册的玩家数量,date_from
和date_to
均来自db1.tbl1
1}}。
当然,当我连接到dblink
时,我可以使用db2
查询从db1
获取数据,但是如何将查询结果传递给dblink
{1}} - 查询?
SELECT * FROM dblink(conn_str, query) AS ...;
其中query
只是一个字符串,并且它不知道任何查询结果。
答案 0 :(得分:1)
如果你真的需要两个表{{1}}:
join
但在您的示例中,select date_from, date_to, count(*)
from
dblink(conn_str, $$
select registration_date
from player
$$) p (registration_date)
inner join
t on p.registration_date between t.date_from and t.date_to
group by date_from, date_to
表就足够了:
player