From: David M. C. <da...@da...> - 2005-05-04 04:35:37
|
On Tue, May 03, 2005 at 07:54:45PM -0700, Ben Bangert wrote: > result = Contact.find(:all, :include => :contact) Oh, OK, I had it backwards. It's nothing to do with an outer join, it's really just an inner join with retrieval of all columns for both tables: select contact.*, customer.* from contact join customer on (contact.customer_id=customer.id) Then just add the Customer objects to the cache as you do the Contact objects (I have no idea how hard it would actually be to modify sqlobject to do). However, you can do it with 2 selects: list(Customer.select()) Contact.select(blah) From 1+N down to 2 is still pretty good. I think that first query can also be narrowed down do you don't waste time fetching and instantiating Customers without Contacts. Dave Cook |