我有两个ecto查询,比如query1和query2,现在我在这两个ecto查询之间执行完全连接,这样的事情
query1 |> join(:full, [a], b in subquery(query2), a.id == b.id)
一切正常,但有些记录以nil的形式返回,就像这样
[%user{}, %user{}, %user{}, nil, %user{}, %user{}, nil, %user{}, %user{}, nil]
我认为在ecto thread.
中也讨论了同样的问题此ecto加入问题是否有一些解决方法。
答案 0 :(得分:0)
那个Ecto线程是一个单独的问题。 :)
您正在使用完整联接,这意味着即使没有匹配项,也会返回联接的左侧和右侧。如果您使用:inner
联接,它应该按预期工作:
query1 |> join(:inner, [a], b in subquery(query2), a.id == b.id)
如果您需要保持完整加入,可能您想在示例中同时返回a
和b
?
query1
|> join(:inner, [a], b in subquery(query2), a.id == b.id)
|> select([a, b], {a, b})
这样可以保证一个不是零。