:joins VS :include => different results?

Hi there,

assume that:

1 we have the following situation:

  Book :has_many Pages :has_many Illustrations   ==== ===== =============

2 certain pages have NO illustrations

3 the following 2 cases:

  A) Book.find(:all,                :joins => [:pages => [:illustrations]])

  B) Book.find(:all,                :include => [:pages => [:illustrations]])

Question: Is it correct that: - in case A), the books containing pages WITHOUT any illustrations will NOT show up in the results - whereas in case B), these books WILL show up?

(Personally, I thought that the main difference between :joins and :include was the "eager loading" part.)

Thanks for any explanation for this! Tom

Question: Is it correct that: - in case A), the books containing pages WITHOUT any illustrations will NOT show up in the results - whereas in case B), these books WILL show up?

(Personally, I thought that the main difference between :joins and :include was the "eager loading" part.)

:joins does an inner join, :include doesn't (and may not even do a join at all)

Fred

:joins does an inner join, :include doesn't (and may not even do a join at all)

If you say "may not", when would it do or not do a join, then? And which type of join?

Doesn't :include amount to a LEFT JOIN, actually?

IME :include does a join if you are using the 'included' table in the query conditions:

A.find(:all, :conditions => 'a.column=1', :include => 'b') # no join A.find(:all, :conditions => 'a.column=1 AND b.column=2', :include => 'b') # join

A.find(:all, :conditions => 'a.column=1 AND b.column=2', :include => 'b') # join

And if you say "join", you mean a "LEFT join" here, if I got the story right...

Thanks, guys!