ECTO模型查询可通过一对一映射返回相关对象

时间:2019-06-10 10:46:23

标签: sql elixir ecto

我很难找到有关如何执行以下Ecto查询的文档。我有一个模型events,它具有一个通过customerevent.customer_id的一对一映射。

在现有的查询管道中,我在events上查询并返回events,它们仅具有不同的客户:

  defp events_by_distinct_customer(query) do
    query
    |> distinct([e], e.customer_id)
  end

除此以外,我需要做的是返回相关的客户对象而不是事件。我该怎么办?我要做什么的方法/说明是什么?

1 个答案:

答案 0 :(得分:0)

您可能想对客户的表格进行简单的inner join

query
|> distinct([e], e.customer_id)
|> join(:inner, [e], c in Customers, on: e.customer_id == c.id)
|> select([e, c], c)

内部联接只返回包含联接双方的行,然后使用select/3只能从结果集中提取客户。