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
2010/3/24 Dudebot [email protected]
On Mar 24, 4:42 pm, Lasse B. [email protected] wrote:
This should do it:
LabDesc.find(:all, :conditions => ‘NOT EXISTS(SELECT * FROM
lab_desc_groups WHERE lab_desc_id=lab_descs.id)’)
Lasse, you have my “SQL Guru of the Year Award.” Many thanks,
Craig
He he he NICE 
/Lasse
2010/3/25 Dudebot [email protected]