activerecord
으로 다음과 같은 SQL을 만들고 싶습니다. 내 문제는 로직 루프에 걸려있어 아직 결합되지 않은 테이블을 LEFT OUTER JOIN
에 연결할 수 없으며 조인 실패로 내 진입 점을 찾을 수 없다는 것입니다.외부가 조인되지 않은 모델을 연결합니다.
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")
는 쿼리는 두 번째 조인 (I 아직 가입하지 않았습니다 아마 때문에)하지만 난 사용자에 따라 m
기록을 선택해야합니다에 이용자들이 무엇을 알고하지 않습니다 없다는 오류를 출력
AdMsgs
에는 두 테이블 중 하나와 연관이 없습니다.
은 완전 외부에 방법이이 3 개 테이블 조인 다음 사람에게 적절한 선택인가 (또는 더 나은 방법을?)
이것은 잘못된 SQL을 생성합니다 ... 이것을 사용하려면 to_sql을 사용하십시오. – PinnyM
self.id에 오류가 발생할 수 있습니다. 이 쿼리는 쇼 모델 –
에서 DB 설계 문제처럼 보입니다. 내가 생각할 수있는 것은 INNER JOIN이 모든 테이블을 결합하고 WHERE 절의 모든 기준을 제공하는 것과 같았습니다. – mask8