首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Postgrex -返回不明确的列引用错误的查询

Postgrex -返回不明确的列引用错误的查询
EN

Stack Overflow用户
提问于 2019-05-21 15:00:26
回答 1查看 120关注 0票数 1

我有以下问题:

代码语言:javascript
复制
def user_contacts(provider_id, filter) do
  query =
    from(
      u in User,
      preload: [:groups],
      where: u.provider_id == ^provider_id and u.type != "company"
    )

  query
  |> filter_sector(filter)
  |> filter_availability(filter)
end

defp filter_sector(query, %{"sector" => "Asset Management & Investment Funds"}) do
  query
  |> join(:inner, [u], p in Profile, p.user_id == u.id)
  |> where([u, p], fragment("(sectors->>'asset' = ?)", "true"))
end

defp filter_sector(query, _), do: query

defp filter_availability(query, %{"availability" => "now"}) do
  query
  |> join(:inner, [u], p in Profile, p.user_id == u.id)
  |> where([u, p], ^Date.utc_today >= p.placement_availability)
end

defp filter_availability(query, _), do: query

我收到以下错误:ERROR 42702 (ambiguous_column): column reference "sectors" is ambiguoussectorsProfile中的嵌入式架构。

我尝试通过将filter_sector查询的结构重新编写为以下代码来解决此问题:

代码语言:javascript
复制
from(
  q in query,
  join: p in Profile,
  on: p.user_id == q.id,
  where: fragment("(sectors->>'asset' = ?)", "true")
)

但我仍然收到相同的错误。奇怪的是,当过滤器只有"sector“值或"availability”值时,查询会正常工作,但当这两个值都存在时,错误就会出现。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-21 16:56:02

在不查看整个查询的情况下,我只能推测,但是您可能在该连接中有另一个表,其中包含一个sectors字段。或者可能配置文件被连接了两次。如果包含完整的错误消息、堆栈跟踪以及生成的查询,将有助于确认这种怀疑。

如果是这种情况,您可以通过完全限定sectors字段来修复它,这是编写查询的首选方法:

代码语言:javascript
复制
query
|> join(:inner, [u], p in Profile, p.user_id == u.id)
|> where([u, p], fragment("(?->>'asset' = ?)", p.sectors, "true"))

现在应该没有歧义了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56232770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档