嗨,我正在尝试练习 SQL,这更多地用于控制台,而不是在我的实际模型中。我有一个Collection
模型has_many: products
。我想搜索所有超过 15 个产品的集合。
这是我写的(而且是错误的):
Collection.find_by_sql("SELECT c.id FROM collections c WHERE count(product_id) > 15")
谁能帮我吗?谢谢
嗨,我正在尝试练习 SQL,这更多地用于控制台,而不是在我的实际模型中。我有一个Collection
模型has_many: products
。我想搜索所有超过 15 个产品的集合。
这是我写的(而且是错误的):
Collection.find_by_sql("SELECT c.id FROM collections c WHERE count(product_id) > 15")
谁能帮我吗?谢谢
也许这个 sql 查询会帮助你
select collections.*, count(products.id) as count_products from collections
inner join products on products.collection_id = collections.id
having count_products > 15
您可以使用子查询来执行此操作:
SELECT *,
(SELECT COUNT(*) FROM services WHERE collection_id = c.id) services_count
FROM collections c WHERE services_count > 15
你可以试试这个吗?,我没有测试过。
此外,还有一种方法可以在没有普通 SQL 的情况下使用 Active Record,但我不记得该怎么做。