通过左边的连接获取不同的记录

时间:2014-06-14 12:08:32

标签: sql ruby-on-rails rails-activerecord

我知道在SO上有很多这样的线程,但我仍然无法弄清楚我的代码有什么问题。我的模特是:

用户

class User < ActiveRecord::Base
  has_many :events
end

事件

class Event < ActiveRecord::Base
  belongs_to :user
  belongs_to :venue
end

地点

class Venue < ActiveRecord::Base
  has_many :events
end

我想要做的是获取用户使用的所有近期场所(通过他创建的事件)。我的主动记录是:

User
  .first
  .events
  .joins(:venue)
  .select('venues.id, venues.name, venues.address, events.beginning_at')
  .uniq('venues.id')

并生成以下查询:

SELECT DISTINCT(venues.id), venues.name, venues.address, events.beginning_at 
FROM "events" INNER JOIN "venues" ON "venues"."id" = "events"."venue_id" 
WHERE "events"."user_id" = $1  
ORDER BY "events"."beginning_at" ASC  [["user_id", 1]]

然而,它给我的是一个非常随机的&#34;最近使用过的场地名单。 ATM将所有事件分配到同一地点,上面的查询为我提供了所有这些场所(因此它下降到一个场地乘以用户创建的所有事件的数量)。更有趣的是 - 该查询给了我9个结果但是当我删除DISTINCT方法时,我得到20个结果(而我的数据库中只有一个地点)

你能否给我一些关于我做错的提示?

0 个答案:

没有答案