postgresql Rails 7中的参数化左连接-选择null或true记录

jgwigjjp  于 2023-01-30  发布在  PostgreSQL
关注(0)|答案(1)|浏览(103)

这段代码没有达到我的目的:

joins(
  'LEFT OUTER JOIN cats ON owners.id = cats.owner_id AND "cats"."hungry" IS FALSE'
).where(
  'cats.hungry IS FALSE OR cats.hungry IS NULL'
)

有3条所有者记录:A、B和C
有两条猫记录:猫A(饥饿),猫B(不饥饿)
我想将所有者分为2组:
我希望所有者:
1.)猫的主人饿了。2)没有猫链接(即猫。饥饿是空的)-或链接的猫不饿
1.)业主A有一只饿猫:A类
2.)主人B的猫不饿(猫B)&主人C没有猫。
我以为上面的左连接会得到我-猫那里有一个连接,但只有连接的猫是不饿。

igetnqfo

igetnqfo1#

您需要删除第二个ON条件,以便每个有或没有cat的所有者都存在,并且只有where lause决定必须删除哪些行

joins(
  'LEFT OUTER JOIN cats ON owners.id = cats.owner_id'
).where(
  'cats.hungry IS FALSE OR cats.hungry IS NULL'
)

相关问题