gpt4 book ai didi

sql - rails : How to query for all the objects whose every association have an attribute that is not null

转载 作者:行者123 更新时间:2023-11-29 12:01:11 24 4
gpt4 key购买 nike

我正在使用 Rails 3.0.5 和 PostgreSQL。

我有一个模型Offer,它有很多Products

class Offer < ActiveRecord::Base
has_many :products
end

class Product < ActiveRecord::Base
belongs_to :offer
end

当您在第三方服务中注册产品时,该产品的 ID 会更新。让我们称之为 service_id。我想要一个 Offer 范围,它获取在第三方服务中注册了每个产品的所有报价。换句话说,我只对所有产品都有服务 ID 的报价实例感兴趣。

报价范围:joins(:products).where("products.service_id is not NULL"),只返回至少有一个产品不为空的报价。

如有任何帮助,我们将不胜感激。

(PS:对不起标题,我尽力解释了。)

编辑:

例如:如果我有 2 个报价:报价 1 和报价 2。 Offer1 有产品 p1 和 p2,Offer2 有产品 p3 和 p4。假设 p1、p2 和 p3 有服务,但 p4 没有。查询应仅返回 Offer1。

最佳答案

这是另一种方法。

Offer.find_by_sql("SELECT * FROM offers o WHERE NOT EXISTS (SELECT * FROM products WHERE products.offer_id = o.id AND service_id IS NULL)")

即使做 ORM 的想法是将 SQL 抽象化,在这种复杂的查询中,我认为最好选择最简单的解决方案而不是使查询更加复杂。

关于sql - rails : How to query for all the objects whose every association have an attribute that is not null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430761/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com