Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据关联计数选择记录(加入?)_Sql_Ruby On Rails_Activerecord_Ruby On Rails 3.1_Associations - Fatal编程技术网

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)")