【发布时间】:2015-07-14 00:21:00
【问题描述】:
我有一个简单的 parent has_many children 关系,我试图让所有孩子少于 n 个的父母。
Parent.select("parents.id").joins(:children).group('parents.id').having('COUNT(children.id) < ?', n).reorder('parents.id')
不断出现的错误是:
SELECT parents.id FROM "parents" INNER JOIN "children" ON "children"."parent_id" = "parents"."id" GROUP BY parents.id HAVING count("children"."id") < 100
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "children"
根据我在网上阅读的内容,这应该可以工作。我已经搜索了许多带有相关问题的帖子,但似乎没有一个答案是相关的。排序的父子关系有一个范围,这就是我按父 ID 重新排序的原因。
我需要什么“FROM-clause”条目?
运行 Rails 4.2 和 Postgres
【问题讨论】:
-
如果在 PgAdmin 或 psql 中运行原始 SQL 会发生什么?它有效还是你得到同样的错误?
children表是否肯定同时具有parent_id和id列? -
我的 psql 中出现同样的错误。我确认
children确实有parent_id和id列。