Если я верно понял суть. То решение вот такое:
-- поиск class_table1 у которых (tip_field=1 и text=test) или (tip_field=2 и text=test2)
select class_table1.*
from class_table1
left join class_table2 on class_table1.id = class_table2.id
where class_table1.category_id = 104
and (class_table2.caption, class_table2.value) in
(('tip_field', '1'), ('tip_field', '2'), ('text', 'test'), ('text', 'test2'))
GROUP BY class_table1.id
HAVING COUNT( DISTINCT class_table2.caption) = 2 -- результат валидный если оба искомых свойства присутствуют у записи