我有一个名为“ getList(date)”的函数。此函数从参数中输入的日期开始向我返回一个项目列表(多列)。
如果我打电话给:
SELECT * FROM getList('12/31/2014');
它工作正常。它返回一个带有日期,物品名称和价格的列表。
像这样:
date item_description price
-----------------------------------------------
12/31/2014 banana 1
12/31/2014 apple 2.5
12/31/2014 coconut 3
但是我还有另一个表,其中包含要搜索的日期。
因此,我想从该表中选择所有日期,对于返回的每一行,我想调用函数“ 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
我不知道该怎么做。当然,我的数据还不算什么。这仅仅是为了解释整个事情。
非常感谢你。
LATERAL
加入正确的方法是使用横向查询(PostgreSQL 9.3或更高版本):
SELECT d."date", f.item_description, f.price
FROM mydates d,
LATERAL getList(d."date") f;
请参阅手册。
SELECT
在较旧的版本中,您必须使用具有某些...古怪的...属性的PostgreSQL扩展,并支持SELECT
-list中的set-returning函数。除非您知道必须支持PostgreSQL 9.2或更早版本,否则不要使用它。
SELECT d."date", (getList(d."date").*
FROM mydates d;
getList
对于输出的每一列,这可能会导致函数的多次求值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句