Вам не обязательно создавать дополнительное поле в базе. Вы можете использовать конструкцию If внутри Select и результат этой функции вывести как дополнительную колонку.
На чистом SQL это будет выглядеть так:
SELECT *, IF(`salon_product`.`salon_id` IS NULL, 0, 1) AS `mark`
FROM `salon_product`
ORDER BY `mark` DESC
В вашем случае должен сработать вот такой код:
$c = new CDbCriteria();
$c->select = '*, , IF(`sp`.`salon_id` IS NULL, 0, 1) AS `mark` ';
$c->join = 'LEFT JOIN `SalonProduct` `sp` ON `t`.`id` = `sp`.`product_id`';
$c->order = '`mark` DESC';
$products = Product::model()->findAll($c);