Multiple has_many through join table appears multiple times

Hi All,

I am trying to configure my models to generate sql like this:

select * from location    inner join sales    inner join product    inner join calendar

Currently the models all have this:

class Location... has_many :sales :foreign_key => "location_id" has_many :products :through => :sales has_many :calendars :through => :sales

class Product... has_many :sales :foreign_key => "product_id" has_many :calendars :through => :sales has_many :locations :through => :sales

class Calendar... has_many :sales :foreign_key => "calendar_id" has_many :products :through => :sales has_many :locations :through => :sales

class Sales... belongs_to :calendar belongs_to :product belongs_to :location

In my controller I have this:

Location.find (   :all,   :select => "calendar.year, location.country, product.name, sales.amount"   :joins => [:products, :calendars] )

The issue is I get sql like this where the sales table appears twice (re-written for brevatiy)

select * from location    inner join sales    inner join product    inner join sales_calendar    inner join calendar on sales_calendar.. = calendar....

What must I change to only get the sales table there once i.e.

select * from location    inner join sales    inner join product    inner join calendar

Thanks

ended up using Sales.find(... which generated the correct sql