Ecto查询选择没有相关记录的模型

时间:2016-02-03 07:25:53

标签: ecto

我的User模型有很多MembershipMembership有一个名为group_id的字段。

我想获得一个Users的列表,其group_id字段不等于1,但没有会员资格。

我试过这个

from u in User, join: m in assoc(u, :memberships), where: m.group_id != 1

我的数据库中有3个用户,其中一个拥有group_id = 1的成员资格。所以我希望我的查询返回2个没有会员资格的用户。但它返回空数组。

1 个答案:

答案 0 :(得分:0)

如果要显式提取没有成员资格的用户,则需要使用左连接并找到group_id为零的位置:

from u in User,
left_join: m in assoc(u, :memberships),
where: is_nil(m.group_id))

What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN?解释了连接之间的差异(在这种情况下,左边与内部之间。)