所以我正在计算PostGis。我有一个用户和一个地方模型。每个都有一个:geom
,而Place有一个虚拟的distance
字段。我想按距离排序,然后选择它。我有这样的工作,但我担心它两次执行了postgis calc。有更好的方法吗?
from(
...,
order_by: [asc: st_distance(u.geom, p.geom)],
select: %{p | distance: st_distance(u.geom, p.geom)}
)
答案 0 :(得分:2)
您可以使用别名来重用该计算所得的值,尽管您必须使用片段。这不是一个权衡! This article很好地详细说明了逻辑。
在您的用例中,它会给出如下信息:
from(
...,
order_by: [asc: fragment("distance")],
select: %{p | distance: fragment("? AS distance", st_distance(u.geom, p.geom))}
)