Gil*_*ert 12 postgresql function postgresql-9.2
我有一个名为"getList(date)"的函数.此函数从参数中输入的日期返回一个项目列表(包含多列).
如果我打电话:
SELECT * FROM getList('12/31/2014');
Run Code Online (Sandbox Code Playgroud)
它工作正常.它返回一个包含日期,项目名称和价格的列表.
像这样的东西:
date item_description price
-----------------------------------------------
12/31/2014 banana 1
12/31/2014 apple 2.5
12/31/2014 coconut 3
Run Code Online (Sandbox Code Playgroud)
但我有另一张表格,其中包含我想要搜索的日期.
所以,我想从该表中选择所有日期,并且对于返回的每一行,我想调用我的函数"getList"来得到如下结果:
date item_description price
-----------------------------------------------
12/28/2014 banana 0.5
12/28/2014 apple 1.5
12/28/2014 coconut 2
12/31/2014 banana 1
12/31/2014 apple 2.5
12/31/2014 coconut 3
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做.当然,我的数据不是水果清单.这只是为了解释整个事情更容易.
非常感谢你.
Cra*_*ger 18
LATERAL加入执行此操作的正确方法是使用横向查询(PostgreSQL 9.3或更高版本):
SELECT d."date", f.item_description, f.price
FROM mydates d,
LATERAL getList(d."date") f;
Run Code Online (Sandbox Code Playgroud)
请参阅手册.
SELECT在旧版本中,您必须使用PostgreSQL扩展,其中包含一些... quirky ...属性,支持SELECT-list 中的set-returns函数.除非您知道必须支持PostgreSQL 9.2或更早版本,否则不要使用它.
SELECT d."date", (getList(d."date").*
FROM mydates d;
Run Code Online (Sandbox Code Playgroud)
这可能导致对getList函数的多次评估,对于输出的每列一次.
| 归档时间: |
|
| 查看次数: |
12033 次 |
| 最近记录: |