我試圖獲得提交了esas_assessment
的uniq patients
的列表,按esas_assessment
爲created_at
的時間排序;爲clinician
是has_many
patients
:through
的表稱爲care_group_assignments
。PG :: UndefinedTable:錯誤:使用SELECT DISTINCT ON時丟失表的FROM-clause條目
我在這裏是工作,但停止工作時,我就使clinicians
has_many :esas_assessments, :through => :patients
而不必 esas_assessment
有clinician_id
場和直接綁在臨牀醫生。我需要做出這樣的選擇,以便多位臨牀醫生可以與esas_assessment
相關聯。
這是我改變esas_assessments
是如何與clinicians
關聯過的。這是基於this answer。
<% @esas_assessments.order("patient_id, created_at DESC").select('ON (patient_id) *').uniq.limit(99).each_with_index do |esas_assessment, index| %>
現在,這給了我:
PG::AmbiguousColumn: ERROR: ORDER BY "patient_id" is ambiguous
,我實在不明白,爲什麼這些都是模糊的,因爲既不patients
或clinicians
有場patient_id
或created_at
。
爲了試圖解決這個我用this answer和曖昧的領域之前添加esas_assessment.
。
<% @esas_assessments.order("esas_assessment.patient_id, esas_assessment.created_at DESC").select('ON (esas_assessment.patient_id) *').uniq.limit(99).each_with_index do |esas_assessment, index| %>
這給了我錯誤:
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "esas_assessment"
: SELECT DISTINCT ON (esas_assessment.patient_id) * FROM "esas_assessments"
INNER JOIN "patients" ON "esas_assessments"."patient_id" = "patients"."id"
INNER JOIN "care_group_assignments"
ON "patients"."id" = "care_group_assignments"."patient_id"
WHERE "care_group_assignments"."clinician_id" = $1
ORDER BY esas_assessment.patient_id, esas_assessment.created_at DESC LIMIT 99
我一直在使用this answer,因爲它似乎是一個類似的問題,但找不出它也試過。
任何幫助將是偉大的。
的Rails 4.1.8,紅寶石2.2.1p85,PostgreSQL的
一種完美的簡單的答案 - 謝謝。你知道爲什麼它沒有在列名之前加上'esas_assessments.'而模棱兩可嗎? – Skiapex
那麼,我認爲'@ esas_assessments'已經被一些查詢填充了。也許這個查詢就會從另一個表'patient_id',所以當你試圖在以前使用''order'它ActiveRecordRelation'抱怨說,它不知道哪個'patient_id'你正在談論。 但無論如何這只是一個猜測。 =] – MurifoX