2016-03-01 84 views
0

我是新來的rails,我嘗試使查詢讓我們假設。IN使用Rails中的對象列表進行查詢

表1(ID,subjectId)
表2(ID,subjectId)

現在我有一個對象表2對象的名單。現在我想查找Table1中所有主題ID匹配Table2 Object List的對象。喜歡的Postgres

的查詢

回答

1

你應該開始閱讀ActiveRecord Query guide

Table1.where("subject_id IN (?)", Table2.all.pluck(:subject_id)) 

你也可以傳遞一個數組,ActiveRecord會爲你使用一個IN

Table1.where(subject_id: Table2.all.pluck(:subject_id)) 

您還可以使用JOIN,因爲它將使用單個查詢,所以更合適。

+0

你能幫我使用連接進行查詢嗎?現在,員工=員工職位(user_id:current_user.id)。首先, @ teacher = Teacher.where(employee_id:employee.id),@ teacherChapter = LessonPlanStatus.where(subject_id:@ teacher.map(&:subject_id) ) – abhaygarg12493

+0

你對SQL連接有多熟悉?您可以從這裏開始http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/ –

+0

感謝您的鏈接,我來自NoSql,但由於自由切割,我接受了Postgres的項目.Could你請幫我緊急 – abhaygarg12493

0

東西我用LessonPlanStatus.where(subject_id:@teacher.map(&:subject_id))

+0

這個查詢效率很低,因爲它會完全加載所有的教師對象,然後會遍歷它們。你應該使用'pluck'。 –