Sql 根据关联计数选择记录(加入?)
三种模式:Sql 根据关联计数选择记录(加入?),sql,ruby-on-rails,activerecord,ruby-on-rails-3.1,associations,Sql,Ruby On Rails,Activerecord,Ruby On Rails 3.1,Associations,三种模式: class Customer < ActiveRecord::Base has_many :visits end class Visit < ActiveRecord::Base belongs_to :customer has_many :messages end class Message < ActiveRecord::Base belong_to :visit end 我如何做这样的事情?做一个(推荐): 一定要处理重复的 @custo
class Customer < ActiveRecord::Base
has_many :visits
end
class Visit < ActiveRecord::Base
belongs_to :customer
has_many :messages
end
class Message < ActiveRecord::Base
belong_to :visit
end
我如何做这样的事情?做一个(推荐):
一定要处理重复的
@customer.visits.joins(:messages).(“distinct(categories.id, categories.name)”)
对于可能出现的性能问题,另一种选择是使用以下子句:
或:
# returns a customer's visits that have at least one message
@customer.visits.joins(:messages)
@customer.visits.joins(:messages).(“distinct(categories.id, categories.name)”)
@customer.visits.where("EXISTS (SELECT messages.id FROM messages WHERE messages.visit_id == visits.id)")
@customer.visits.where("visits.id IN (SELECT messages.visit_id FROM messages)")