Elixir 在预加载中添加GROUPBY子句
我有一个模型,它通过HABTM联接表具有多对多关联。然而,我的联接表并没有唯一地映射我的行,因此我需要添加一个group_by子句来获取我的唯一行 使用Elixir 在预加载中添加GROUPBY子句,elixir,ecto,Elixir,Ecto,我有一个模型,它通过HABTM联接表具有多对多关联。然而,我的联接表并没有唯一地映射我的行,因此我需要添加一个group_by子句来获取我的唯一行 使用Repo.preload时,是否有方法通过表达式添加分组 Repo.get!(P1, p1_id) |> Repo.preload(:c0) 生成的查询: SELECT c0.*, p1."id" FROM "c0" AS c0 LEFT JOIN "p1" AS p1 ON p1."id" = 2 LEFT JOIN
Repo.preload
时,是否有方法通过表达式添加分组
Repo.get!(P1, p1_id)
|> Repo.preload(:c0)
生成的查询:
SELECT
c0.*, p1."id" FROM "c0" AS c0
LEFT JOIN "p1" AS p1
ON p1."id" = 2
LEFT JOIN "c2" AS c2
ON c2."p1" = p1."id"
WHERE (c2."c1_id" = c0."id")
目标查询:
SELECT
c0.*, p1."id" FROM "c0" AS c0
LEFT JOIN "p1" AS p1
ON p1."id" = 2
LEFT JOIN "c2" AS c2
ON c2."p1" = p1."id"
WHERE (c2."c1_id" = c0."id")
GROUP BY c0."id", p1."id"
对于这一点,我还没有在本地测试,但我认为它是可以实现的,如下所示
query = from p in P1,
join: c in assoc(p, :c0)
group_by: p.id
preload: [c0: c]
Repo.get(query, p1_id)