: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!