ActiveRecord MySQL和JOINS

时间:2009-05-08 16:50:38

标签: mysql activerecord join

我遇到的问题与RubyOnRails Guide中公开的问题非常相似。

此查询:

Client.all :joins => :orders, 
           :conditions => { :orders => {:created_at => time_range}}
如果他们在时间范围内做了一些订单,

应该返回所有客户的订单。我是对的吗?

我想要的只是略有不同:我希望所有客户都能在时间范围内订购或订购。如果他们发了一些订单,我想要他们。我提出了这个问题:

Client.all :joins => 'LEFT OUTER JOIN orders ON orders.client_id = clients.id',
           :conditions => {:orders => {:created_at => time_range}})

但这并没有给我那些没有下订单的客户......有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

我认为这样做会:

Client.all :joins => 'LEFT OUTER JOIN orders ON orders.client_id = clients.id',
       :conditions => ['orders.created_at IN (?) OR orders.id IS NULL', time_range]