我想用activerecord
創建以下SQL。我的問題是,我卡在一個邏輯循環,我不能LEFT OUTER JOIN
表尚未加入,我無法找到我的入口點加入失敗外部加入不是關聯的模型
in activerecord我正在嘗試
AdMsgs.joins("LEFT OUTER JOIN shows ON ad_msgs.user_id = shows.id OR ad_msgs.user_id = shows.b_id ")
.joins("LEFT OUTER JOIN m ON m.user_id = users.id OR m.m_id = shops.id OR m.m_id = shows.b_id")
.joins("LEFT OUTER JOIN users ON ad_msgs.to = users.email OR ad_msgs.user_id = users.id OR users.id = m.user_id")
.where("shows.id = ?", self.id)
.distinct("ad_msgs.id")
查詢輸出錯誤說它不知道什麼用戶是在第二個連接(可能是因爲我還沒有加入它尚未),但我需要選擇根據用戶的m
記錄
AdMsgs
與這兩個表都沒有關聯。
有沒有辦法完全外連接這3個表,然後選擇那些相關的(或任何更好的辦法?)
這將生成無效的SQL ...使用to_sql來查看此操作。 – PinnyM 2014-11-23 16:14:14
請注意self.id,它可能會引發錯誤。這個查詢來自shows model – 2014-11-23 16:15:35
對我來說,它看起來像一個數據庫設計問題。我唯一能想到的就是像通過INNER JOIN連接所有表並在WHERE子句中提供所有條件。 – mask8 2014-11-24 00:32:53