Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 在预加载中添加GROUPBY子句_Elixir_Ecto - Fatal编程技术网

Elixir 在预加载中添加GROUPBY子句

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

我有一个模型,它通过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 "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)