It would be easier to understand this question with real table/model names instead of random numbers.
Active record is not a replacement for using SQL, it is a way of working more efficiently with it. There is probably a way to do this with Active Record, but I would simply do this.
$models = Class1::model()->findAllBySql("SELECT class1.* FROM class1 INNER JOIN class2 INNER JOIN class3 WHERE ...");
$criteria = new CDbCriteria;
$criteria->condition = "your conditions for class3 as in a SQL statement but without 'WHERE'";
$join = Array('class2', 'class2.class1');
$class3s = Class3::model()->with($join)->findAll($criteria);
//now you want the class1s
$class1s = Array();
foreach ($class3s as $class3)
foreach ($class3s->class2 as $class2)
foreach ($class2->class1 as $class1)
$class1s[] = $class1;
Looks pretty ugly now that I look at it perhaps this would do better (similar to alexs solution):
$connection = Yii::app()->db;
$sql = "your sql with joins and everything";
$cmd = $connection->createCommand($sql);
$reader = $cmd->queryAll();
$class1s = Array();
foreach ($reader as $row){
$class1 = new Class1;
$class1->attr1 = $row->whatever
.
.
.
$class1s[] = $class1;
}