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
Postgresql 加载带有标题的子节_Postgresql_Elixir_Ecto - Fatal编程技术网

Postgresql 加载带有标题的子节

Postgresql 加载带有标题的子节,postgresql,elixir,ecto,Postgresql,Elixir,Ecto,我正在做一些左联合,试图预加载一些嵌套的关联。我有部分,有子部分,我想得到所有有标题的子部分,而不是没有标题的子部分。当我添加这一行时,整个查询返回nil,但是当我删除它时,我得到了所有内容,包括没有标题的sub_部分。其中:not是_nilsub2.title 我很难找到我做错了什么?我觉得我应该得到这个结果 任何帮助都将不胜感激。谢谢 from a in Article, left_join: s in assoc(a, :sections), left_join: d in ass

我正在做一些左联合,试图预加载一些嵌套的关联。我有部分,有子部分,我想得到所有有标题的子部分,而不是没有标题的子部分。当我添加这一行时,整个查询返回nil,但是当我删除它时,我得到了所有内容,包括没有标题的sub_部分。其中:not是_nilsub2.title

我很难找到我做错了什么?我觉得我应该得到这个结果

任何帮助都将不胜感激。谢谢

from a in Article,
  left_join: s in assoc(a, :sections),
  left_join: d in assoc(s, :definitions),
  left_join: sub in assoc(d, :sub_sections),
  left_join: sub2 in assoc(sub, :sub_sections),
  where: a.id == ^id,
  where: not is_nil(sub2.title),
  preload: [sections: {s, [definitions: {d, [sub_sections: {sub, sub_sections: sub2}]}]}]```

您应该将条件not is_nilsub2.title应用于相应的联接,而不是整个查询。有点像下面的应该工作

subs = from sub in SubSection, where: not is_nil(sub.title)

from a in Article,
  left_join: s in assoc(a, :sections),
  left_join: d in assoc(s, :definitions),
  left_join: sub in assoc(d, :sub_sections),
  left_join: sub2 in ^subs, on: sub2.parent == sub.id,
  where: a.id == ^id,
  preload: [sections: {
    s, [definitions:
     {d, [sub_sections: {sub, sub_sections: sub2}]}]}]

你为什么要参加两次小组?我想你只需要第一个?这是一个自我参照的关联。每个sub_节可以有许多sub_节。因此,查询查找的是指定文章中没有标题的sub_节以及没有子项的任何节、定义或小节。。我不知道你在期待什么。它听起来更像是一篇特定文章的每一小节,不管有多深,也包括没有标题的子小节、子小节等。这是正确的吗?也许您可以给出一些示例数据和您的预期输出—就是这样!这也很有道理。谢谢你的回答!欢迎我在答案中加了一个别针。