Regarding queries across relationships

Hi, I'm sending this message again due to the migrationof the list..

I'm trying to build a query that looks like this:

     @book_pages, @books = paginate(:books,                                                 :per_page => 20,                                                 :conditions => ['book.author.name like ?', '%jim%],                                                 :order_by => @sort_order)

I want to basically list out all the books by authors with names like 'jim' - prefer to have this paginated so that I can use my basic paginated list view. However, this throws up an exception:

Mysql::Error: Unknown table 'books' in where clause: SELECT count(*) AS count_all FROM books WHERE (author.name like '%ha%')

My models: authors have_many books book belongs_to author

I'm sorry I seem very confused about how to do the query. I'd appreciate help!

What do you think I'm doing wrong? Thanks Mohit.

Mohit Sindhwani wrote:

Hi, I'm sending this message again due to the migrationof the list..

I'm trying to build a query that looks like this:

     @book_pages, @books = paginate(:books,                                                 :per_page => 20,                                                 :conditions => ['book.author.name like ?', '%jim%],                                                 :order_by => @sort_order)

hi, I'm working on a book app to ! thats how it should look like : --->> paginate(:book, :include=>[:author], ..., :conditions=>["authors.name like ?", '%jim%']) the include statement operates a join in the sql query. See eager loading for more explanations.

charlysisto@gmail.com wrote:

Mohit Sindhwani wrote:   

Hi, I'm sending this message again due to the migrationof the list..

I'm trying to build a query that looks like this:

     @book_pages, @books = paginate(:books,                                                 :per_page => 20,                                                 :conditions => ['book.author.name like ?', '%jim%],                                                 :order_by => @sort_order)

hi, I'm working on a book app to ! thats how it should look like : --->> paginate(:book, :include=>[:author], ..., :conditions=>["authors like ?", '%jim%']) the include statement operates a join in the sql query. See eager loading for more explanations.    Thanks! I actually _just_ figured that out and was going to mail out a reply to my own post.

I guess my confusion came from the fact that I had not found a good example of a join query. Also, the impression that I had got from somewhere was that ":include" is used to load all the data in a single query (which stuck in my mind as an 'optimization' rather than a must-do). My rules for optimization require me to do that only at the end. Hence, it was failing.. but I understand now!

Thanks again & sorry for the bother. :slight_smile: Cheers Mohit.