Lazy boolean tests in SQL?

I’m doing a ferret find_by_contents search which searches multiple
tables. One of the conditions i’m putting through is a test on a column
that some of the tables don’t have, which is making the test crash.

To be specific, i’m searching on Lesson, Course and Resource, and one of
the conditions relates to a field ‘kind_id’, which is only possessed by
the ‘resources’ table.

To get around this, i put in another test first, on a ‘type’ field,
which is set to ‘Resource’ for all rows in the ‘Resource’ table. I
thought that this would mean that kind_id was only tested on rows from
the resources table, but it’s not working - the test still fails as
kind_id is being evaluated against tables that don’t have the field.

My value for the conditions key is

conditions << “type = ‘Resource’ AND kind_id IN
(#{params[:kinds].collect{|k| k.to_s}.join(”,")})"

which evaluates to something like

conditions << “type = ‘Resource’ AND kind_id IN (“1”,“4”,“8”)”

So, basically i need the SQL test to be lazy, and not evaluate kind_id
if the first test fails. Is this possible? If not, can anyone see a
different way around this? For example, can i only test the kind_id
conditions on rows from a specific table?

thanks, max