Postgresql 加载带有标题的子节
我正在做一些左联合,试图预加载一些嵌套的关联。我有部分,有子部分,我想得到所有有标题的子部分,而不是没有标题的子部分。当我添加这一行时,整个查询返回nil,但是当我删除它时,我得到了所有内容,包括没有标题的sub_部分。其中:not是_nilsub2.title 我很难找到我做错了什么?我觉得我应该得到这个结果 任何帮助都将不胜感激。谢谢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
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_节以及没有子项的任何节、定义或小节。。我不知道你在期待什么。它听起来更像是一篇特定文章的每一小节,不管有多深,也包括没有标题的子小节、子小节等。这是正确的吗?也许您可以给出一些示例数据和您的预期输出—就是这样!这也很有道理。谢谢你的回答!欢迎我在答案中加了一个别针。