我想要做的就是写下一个查询:
SELECT *
FROM Customers c
LEFT JOIN CustomerAccounts ca
ON ca.CustomerID = c.CustomerID
AND c.State = 'NY'
请注意,我没有使用任何WHERE子句,但我需要我的JOIN有一个条件。我无法在Ruby on Rails中使用它。
你可以帮帮我吗?答案 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