2016-01-20 161 views
0

我有一個模糊的條款加入4桌在軌道4

當我運行上面的SQL。 錯誤=>

ActiveRecord::StatementInvalid: Mysql2::Error: Column 'email' in where clause is ambiguous: SELECT listing_buyers .* FROM listing_buyers INNER JOIN listings ON listings . id = listing_buyers . listing_id left join buyers on listing_buyers.email = buyers.email left join buyer_infos on buyers.id = buyer_infos.buyer_id WHERE (email LIKE '%%')

之後,編輯SQL命令來

ListingBuyer.joins('left join buyers on listing_buyers.email = buyers.email left join buyer_infos on buyers.id = buyer_infos.buyer_id').joins(:listing).select('listing_buyers.*').where(["listing_buyers.email LIKE ?",'%%']) 

上述代碼工程確定。

我想使用SQL 。哪裏([ 「電子郵件是怎樣的?」, '%%']) 不想使用

where(["listing_buyers.email LIKE ?",'%%']) 

如何編輯這個SQL代碼

ListingBuyer.joins('left join buyers on listing_buyers.email = buyers.email left join buyer_infos on buyers.id = buyer_infos.buyer_id').joins(:listing).select('listing_buyers.*') 

可以使用

where(["email LIKE ?",'%%']) 

請幫助我。

+1

你爲什麼要使用你知道它不工作的代碼,你爲什麼不想使用工作代碼? – spickermann

回答

0

SQL需要知道你要比較哪些表email列 - 如果你想要把它比作多個電子郵件列,那麼你就需要或他們在一起,就像

where(["listings_buyer.email LIKE ? OR other_table.email LIKE ?",'%%','%%'])