【发布时间】:2016-06-06 13:33:57
【问题描述】:
我有三张桌子
- 公司
- 代码
- CompanyCode [join table] - 存储公司代码
现在,我想查找只有代码 2,3 和 5 的公司的记录。
我正在尝试
Comapny.joins(:codes).where('codes.n_code' IN ? , [2,3,5])
但这将导致所有公司只有n_code = 2 或n_code = 3 或n_code = 5。
我希望拥有n_code2、3 和5 的公司具有所有这三个值。
【问题讨论】:
-
我对RoR不熟悉,但是在SQL中我相信你必须加入
codes表3次。如果我错了,请纠正我。 -
@pumbo 你是,你可以做一个连接,并指定代码n_code的条件为2、3或5。
-
@j-dexx 请给我一个普通 SQL 的例子
-
@pumbo 我明白你现在的意思了。我以为你的意思是活动记录
.join因为 Rails 关联 Rails 足够聪明,可以自动执行公司代码的连接,然后为你编码。 -
您可以使用
array_agg为每个公司生成一个代码列表,然后过滤包含[2,3,5]的数组
标签: ruby-on-rails ruby database postgresql ruby-on-rails-4