如何使用关系中的列来注释查询?

时间:2015-03-13 04:37:28

标签: mysql sql ruby-on-rails arel

我有两个模型,OwnerDog。狗属于业主,业主有很多狗。

我可以查询所有者并使用most_food_needed_for_pet对其进行注释,这是food_needed的最Dog的{​​{1}}列吗?我知道我可以使用多个查询完成此操作,但我应该只使用lifespan进行一次查询。

我最初的尝试是

Arel

但是,这会错误地为每个所有者添加最大Owner. joins(:dogs). select(Dog.arel_table[:food_needed].as('most_food_needed_for_pet')). select(Dog.arel_table[:lifespan].maximum). group('dogs.owner_id') 和数据库中第一个lifespan的{​​{1}},而不是最长的food_needed

1 个答案:

答案 0 :(得分:0)

d = Dog.arel_table
o = Owner.arel_table
Owner.
  select( o[Arel.star], d[:lifespan], d[:food_needed].as('most_food_needed_for_pet')).
  joins(:dogs).
  group(:owner_id).
  having( dogs: { lifespan: d[:lifespan].maximum } )

[编辑以便在字段重叠时移除裸*