【发布时间】:2011-04-12 04:20:47
【问题描述】:
我正在使用 rails 2.3.10 和 named_scope 的新手。我正在处理一个 SQL,它检索特定事件的最后邀请列表。我想出了一个带有子查询的 SQL,它看起来可以做我想做的事。我在想是否可以使用named_scope 来做同样的事情,这样我就可以和find() 一起使用它。
我有以下问题:
- 可以用
named_scope实现SQL吗? - 能否以一种优雅的方式使子选择不包含在
:condition?需要多个named_scope? -
named_scope(s) 的外观如何? -
find()包含 name_scope(s) 时的外观如何?
SQL:
SELECT *
FROM invitation inv1
JOIN (
SELECT event_id, user_id, MAX(invite_time) AS last_invite_time
FROM invitation
GROUP BY event_id, user_id
) AS last_invite ON
inv1.event_id = last_invite.event_id AND
inv1.user_id = last_invite.user_id AND
inv1.invite_time = last_invite.last_invite_time
邀请数据:
event_id user_id invite_time invite_reply_code
1 78 2011-02-01 15:21 1
2 78 2011-02-02 11:45 1
2 79 2011-02-02 11:50 1
2 79 2011-02-02 11:55 1
2 80 2011-02-02 11:50 1
2 80 2011-02-02 11:51 1
预期结果:
event_id user_id invite_time invite_reply_code
2 78 2011-02-02 11:45 1
2 79 2011-02-02 11:55 1
2 80 2011-02-02 11:51 1
【问题讨论】:
标签: ruby-on-rails activerecord subquery named-scope