【问题标题】:ActiveRecord MySQL and JOINSActiveRecord MySQL 和 JOINS
【发布时间】:2009-05-08 16:50:37
【问题描述】:

我有一个与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}})

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

【问题讨论】:

    标签: mysql activerecord join


    【解决方案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]
    

    【讨论】:

    • 但这不是作弊吗?...让我试试看。
    • 我不知道如何在没有插件或手动编写查询的情况下在 AR 中执行 OR 条件。也许我一路上错过了一些东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    • 2016-10-24
    • 2013-05-17
    相关资源
    最近更新 更多