我的User
模型有很多Membership
。 Membership
有一个名为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个没有会员资格的用户。但它返回空数组。
答案 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?解释了连接之间的差异(在这种情况下,左边与内部之间。)