如何在Ruby on Rails中编写连接条件?

时间:2017-02-22 13:39:24

标签: ruby-on-rails ruby

我想要做的就是写下一个查询:

SELECT *
FROM Customers c
LEFT JOIN CustomerAccounts ca
    ON ca.CustomerID = c.CustomerID
    AND c.State = 'NY'

请注意,我没有使用任何WHERE子句,但我需要我的JOIN有一个条件。我无法在Ruby on Rails中使用它。

你可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

您可以使用LEFT JOIN加入表格。只需在joins中传递连接条件即可获得预期结果

Customer.joins("LEFT JOIN CustomerAccounts
                ON CustomerAccounts.CustomerID = Customers.CustomerID
                AND Customers.State = 'NY'")

#=> SELECT * FROM Customers LEFT JOIN CustomerAccounts ON CustomerAccounts.CustomerID = Customers.CustomerID AND Customers.State = 'NY'
  

注意:只有.joins()执行INNER JOIN所以您需要指定条件的连接

答案 1 :(得分:0)

转换为activerecord的SQL代码如下所示(使用joins):

Customer.where(state: 'NY').joins(:customer_accounts)

代码假定您已设置关联:

class Customer
  has_many :customer_accounts
end