簡體   English   中英

將此SQL查詢轉換為AREL(外部聯接)

[英]Convert this SQL query to AREL (outer joins)

我正在嘗試將此查詢轉換為AREL:

SELECT users.* FROM users LEFT OUTER JOIN (
      SELECT DISTINCT educations.user_id
      FROM educations
      INNER JOIN schools
      ON educations.school_id = schools.id
      WHERE schools.name = "school_name" ) AS x 
ON users.id = x.user_id WHERE x.user_id IS null

我希望能夠像這樣鏈接此查詢:

class User < ActiveRecord::Base
  def find_by_school(school_name)
    ...
  end
end

myUser.find_by_school("school_name").where(...).joins(...)...etc

有任何想法嗎?

盡管這個問題有些陳舊,但我還是偶然發現了這個問題。

如果我正確理解了您的查詢,那么您想讓某所學校的所有未受過教育的用戶...

如果是這樣,我會走以下路線-鑒於您的關系都已正確建立:

class User < ActiveRecord::Base
  def self.find_educated_by_school_name(school_name)
    Education.pluck(:user_id).joins(:schools).where('schools.name = ?', school_name)
  end
end

User.where('users.id NOT IN (?)', User.find_educated_by_school_name('school_name'))

還請記住,按照慣例, myUser.find_by_*表示“在給定的用戶實例上查找內容”。 因此,它應該利用用戶實例來查找內容。

User.find_by_*意思是“通常根據特定條件查找用戶”。

希望我的意思很清楚!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM