我必须使用Rails的活动记录或sql(sqlite)执行以下查询。
让我们从模型的描述开始。
m:通过具有模式interests_categories,events_categories等的第三个表,可以实现关系。
我有用户和那些用户有兴趣(类别 - >例如体育,音乐和他喜欢的位置)。事件被标记为位置和类别。
现在,我想列出可能适合特定事件的所有用户。例如,如果有一个事件发生在纽约市并且在体育运动中有一些东西,我想根据位置和类别得到可能对此事件感兴趣的用户列表。
我想在单个数据库访问中而不是多个访问。 在ActiveRecord或sql中会如何? (更有效的方式将是首选) 我可能必须首先加入类别/位置表,根据先前加入的所有表加入兴趣,然后根据兴趣选择所有用户。 不幸的是,我对连接sql的知识有限。或者甚至有不同的方法可供使用?
答案 0 :(得分:1)
经过一番思考后,我觉得这次加入会有效。
class Events
def get_users
User.joins(%"inner join interests on interests.user_id = users.id
inner join categories_interests
on categories_interests.interest_id = interests.id
inner join categories on categories_interests.category_id = categories.id
inner join interests_locations
on interests_locations.interest_id = interests.id
inner join locations on interests_locations.location_id = locations.id
inner join categories_events on categories_events.category_id = categories.id
inner join events_locations on events_locations.location_id = locations.id
inner join events
on categories_events.event_id = events.id
and events_locations.event_id = events.id").where("events.id = :eid", :eid => id)
end
end