2017-02-22 77 views
0

我想要做的就是寫東西像一個查詢:說我沒有使用任何WHERE子句如何在Ruby on Rails中編寫連接條件?

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

通知,但我需要我的JOIN有一個條件。我無法在Ruby on Rails中使用它。

你能幫我嗎?

+0

你得到它的工作? –

回答

0

你的SQL代碼,翻譯成ActiveRecord的,看上去就像這樣(使用joins):

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

的代碼假設,您有協會成立:

class Customer 
    has_many :customer_accounts 
end 
+0

這將執行一個'INNER JOIN',而不是'LEFT JOIN' - 它可能不是完全相同的查詢。 – eugen

+0

@eugen哦,沒錯,在軌道5中有一個'left_outer_join'雖然.. –

+0

很好的知道 - 我不知道在rails 5中改變了! – eugen

0

可以加入與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所以你需要指定與條件加入