我在编写涉及嵌套关联的查询时遇到了麻烦。有人知道我在这里想念的吗?我有一个模型Appeal
,其中有许多Hearing
,并且Hearing
属于HearingDay
。我想在所有听证会disposition == "held"
中找到所有上诉,但是如果上诉中有很多听证会,我只想检查最近听证会的disposition
,这取决于听证会的{{1} }属性,它是一个hearing_day.scheduled_for
字段。例如,如果一个上诉有2次听证,而最老的一次听证会是date
,最近的一次听证会有其他听证会,那么我不希望它包含在结果中。
以下是我在上诉中尝试过的所有查询:
这给了我一个我不期望的额外结果:
held
这给了我一个我不期望的额外结果:
joins(:hearings => :hearing_day)
.where("hearing_days.scheduled_for = (SELECT MAX(hearing_days.scheduled_for) FROM hearing_days WHERE hearing_days.id = hearings.hearing_day_id)")
.where(hearings: { disposition: "held" })
此结果未包含我期望的结果,但成功排除了上面查询中错误包含的结果:
joins(:hearings => :hearing_day)
.where("hearing_days.scheduled_for = (SELECT MAX(hearing_days.scheduled_for) FROM hearing_days WHERE hearings.appeal_id = appeals.id AND hearing_days.id = hearings.hearing_day_id)")
.where(hearings: { disposition: "held" })
感谢您提供的任何帮助。