首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails如何查询多个连接

Rails如何查询多个连接
EN

Stack Overflow用户
提问于 2020-04-04 11:13:46
回答 1查看 33关注 0票数 0

我有三张桌子ContactNon Medical NeedsMedical Needs。联系has_many非医疗和医疗需求。

需求有一个fulfilled布尔列,它将需求标记为已完成。我需要查询所有有任何未满足的医疗或非医疗需求的联系人。

我尝试过使用或关系进行查询,但它只返回需求的交集。下面是我想出的查询

代码语言:javascript
复制
Contact.joins(:non_medical_reqs, :medicaL_reqs)
       .where(non_medical_reqs: {fullfilled: nil})
       .or(Contact.joins(:non_medical_reqs, :medicaL_reqs)
       .where(medical_reqs: {fullfilled: nil}))

编辑我在Rails 6中使用Postgresql

EN

回答 1

Stack Overflow用户

发布于 2020-04-04 12:13:27

这可能行得通。我在一个项目中的类似关系上尝试了它,它似乎起作用了。使用or,我只能让它与where子句的结构稍有不同。

代码语言:javascript
复制
Contact.left_joins(:non_medical_reqs, :medicaL_reqs).where('non_medical_reqs.fullfilled = ?', nil).or(Contact.left_joins(:non_medical_reqs, :medicaL_reqs).where('medical_reqs.fullfilled = ?', nil}))

为了检查这一点,我将提取以下查询并比较结果:

代码语言:javascript
复制
Contact.left_joins(:non_medical_reqs).where('non_medical_reqs.fullfilled = ?', nil)

代码语言:javascript
复制
Contact.left_joins(:medicaL_reqs).where('medical_reqs.fullfilled = ?', nil})

并确保两个集合与第一个查询的结果相等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61023332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档