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 在EXTO中,预加载聚合查询_Elixir_Ecto - Fatal编程技术网

Elixir 在EXTO中,预加载聚合查询

Elixir 在EXTO中,预加载聚合查询,elixir,ecto,Elixir,Ecto,假设我有帖子,评论和投票的表格 投票表有一个方向列,该列为1、0或-1 我想查询所有帖子,以及每个帖子的评论数,以及投票总数。方向 理想情况下,使用Post模型上的可组合查询,这是否可以作为EXTO中的子查询实现 目前我拥有的是: def count_comments(query) do from p in query, left_join: c in assoc(p, :comments), select: {p, count(c.id)}, group_by: p

假设我有
帖子
评论
投票
的表格

投票
表有一个
方向
列,该列为1、0或-1

我想查询所有帖子,以及每个帖子的评论数,以及
投票总数。方向

理想情况下,使用
Post
模型上的可组合查询,这是否可以作为EXTO中的子查询实现

目前我拥有的是:

def count_comments(query) do
  from p in query,
    left_join: c in assoc(p, :comments),
    select: {p, count(c.id)},
    group_by: p.id
end

def get_score(query) do
  from l in query,
    left_join: v in assoc(p, :votes),
    select: {p, sum(v.direction)},
    group_by: p.id
end
但我无法同时编写这两个查询,因为我遇到了以下错误:

(exto.Query.CompileError)查询中只允许一个select表达式


目前尚不清楚您的代码在哪些方面失败,但可能通过以下方式实现:

from p in Post,
  left_join: c in assoc(p, :comments),
  left_join: v in assoc(p, :votes),
  group_by: p.id,
  select: {p, count(c.id), sum(v.direction)}
仅允许“未终止”查询,也就是说,对于没有
select
子句的查询(未测试,可能与您的结构略有不同):


目前尚不清楚您的代码在哪些方面失败,但可能通过以下方式实现:

from p in Post,
  left_join: c in assoc(p, :comments),
  left_join: v in assoc(p, :votes),
  group_by: p.id,
  select: {p, count(c.id), sum(v.direction)}
仅允许“未终止”查询,也就是说,对于没有
select
子句的查询(未测试,可能与您的结构略有不同):


这似乎有效。这是一个单独的问题,但是为这个查询预加载相关模型的最简单方法是什么。例如,假设帖子有一个用户,我如何确保该用户被加载到帖子中?
exto
有一个很好的文档,顺便说一句,这似乎是可行的。这是一个单独的问题,但是为这个查询预加载相关模型的最简单方法是什么。例如,假设帖子有一个用户,我如何确保该用户被加载到帖子中?
exto
有一个好的文档