Для этого вам не нужен SQL, вы можете использовать встроенную функцию AR: include.
Здесь мы включаем связанные: user и: project_category, передавая определенный user_id и массив категорий, которые нас интересуют.
project = Project.find(:include => [:user, :project_categories], :conditions => {:user_id => user_id, :project_category_id => [A,B,C,D]})
Вам нужно будет настроить имена столбцов под ваши требования, но вы сможете начать с чего-то подобного.