Inner SELECT-s in Rails

Is there a proper way of doing inner selects in rails.

Basically, I run in issues where I need the count of a query and end up
using find_by_sql. I was wondering if there was any elegant way of doing
such queries.

Roland

On Monday, July 17, 2006, at 7:55 PM, Roland M. wrote:


Rails mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails

Can you post an example of the kind of query you want to do?

_Kevin
www.sciwerks.com

here you go:

select count(*)
from (select distinct field_id from my_table
left join my_other_table on my_other_table.forein_key_id =
my_table.id
where field_id < 5) as a
left join some_other_table on a.other_id = some_other_table.id
where some_other_table.created_at < getdate()

Roland M. wrote:

here you go:

select count(*)
from (select distinct field_id from my_table
left join my_other_table on my_other_table.forein_key_id =
my_table.id
where field_id < 5) as a
left join some_other_table on a.other_id = some_other_table.id
where some_other_table.created_at < getdate()

Hi, yahoo search brought me to this old topic, but I am running into the
same problem. So is find_by_sql the only way to perform joins on
inner-selects?

Depends on how you layout your models. Things like “left join
my_other_table on my_other_table.forein_key_id = my_table.id” are
taken care of by AR if you set up the associations properly. You
could then do a Model.count(:joins=>…, :conditions=>…)

On Jun 4, 12:38 am, Fernando P. [email protected]