More elegant solution for "missing" has-many through ids?

I have LabGroup and LabDesc which have many through LabDescGroup. I'd like to identify LabDescs which don't have a LabGroup. This works:

x = LabDescGroup.find( :all, :select => 'DISTINCT lab_desc_id' ).each{ |c| x << c.lab_desc_id } y = LabDesc.find( :all, :select => 'id' ).each{ |c| y << c.id } notfound = x - y

But is there a more elegant way? It feels like I should be able to do this entirely through queries, but I'm not seeing the solution.

This should do it:

LabDesc.find(:all, :conditions => ‘NOT EXISTS(SELECT * FROM lab_desc_groups WHERE lab_desc_id=lab_descs.id)’)

/Lasse

Lasse, you have my "SQL Guru of the Year Award." Many thanks, Craig

He he he NICE :slight_smile:

/Lasse