yii несколько внутренних объединений

Я пытаюсь написать запрос в yii. У меня есть следующее, которое работает

$criteria = new CDbCriteria; $criteria->condition = "($column = :id)"; $criteria->params = array(":id" => $id ); $rows = Jobs::model()->with('pROJ')->findAll($criteria); 

Это возвращает модель Jobs в массиве. Мне нужно написать следующий запрос в yii, чтобы вернуть модель

 SELECT jobs.JOBNO, jobs.STATUS, projects.ORDERNO, jobs.PROJID, jobs.NAME, jobs.SEQ, jobs.PCENTDONE, jobs.EARNED, jobs.VALUE, jobs.DATEIN, jobs.DATEDONE, jobs.DATEDUE, jobs.SENTBACK, jobs.ORIGTAPES, jobs.COMMENTS, projects.CATEGORY, orders.BIDNO FROM (jobs INNER JOIN projects ON jobs.PROJID = projects.PROJID) INNER JOIN orders ON projects.ORDERNO = orders.ORDERNO where jobs.projid = 3002001 ORDER BY jobs.JOBNO, jobs.PROJID 

Я пробовал следующее, но он не работает

 $rows = Yii::app()->db->createCommand() ->select('jobs.*, projects.ORDERNO, projects.CATEGORY, orders.BIDNO') ->from('jobs, projects, orders') ->join('projects p','jobs.PROJID = p.PROJID') ->join('orders o', 'p.ORDERNO = o.ORDERNO') ->where('jobs.projid=:id', array(':id'=>$id)) ->queryRow(); 

Я получаю следующую ошибку

 CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'jobs.PROJID' in 'on clause'. The SQL statement executed was: SELECT `jobs`.*, `projects`.`ORDERNO`, `projects`.`CATEGORY`, `orders`.`BIDNO` FROM `jobs`, `projects`, `orders` JOIN `projects` `p` ON jobs.PROJID=p.PROJID JOIN `orders` `o` ON p.ORDERNO=o.ORDERNO WHERE jobs.projid=:id 

Я обновил

 $rows = Yii::app()->db->createCommand() ->select('jobs.*, projects.orderno, projects.category, orders.bidno') ->from('jobs') ->join('projects p','jobs.projid = p.projid') ->join('orders o', 'p.orderno = o.orderno') ->where('jobs.projid=:id', array(':id'=>$id)) ->queryRow(); 

но я все еще получаю ошибку. Все столбцы в mysql – это CAPS

 CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'projects.orderno' in 'field list'. The SQL statement executed was: SELECT `jobs`.*, `projects`.`orderno`, `projects`.`category`, `orders`.`bidno` FROM `jobs` JOIN `projects` `p` ON jobs.projid = p.projid JOIN `orders` `o` ON p.orderno = o.orderno WHERE jobs.projid=:id 

Solutions Collecting From Web of "yii несколько внутренних объединений"

Поскольку @DCoder сказал: ваш выбор должен теперь читать select('jobs.*, p.orderno, p.category, o.bidno') . Для согласованности вы также должны выполнять следующие jobs :

 $rows = Yii::app()->db->createCommand() ->select('j.*, p.orderno, p.category, o.bidno') ->from('jobs j') ->join('projects p','j.projid = p.projid') ->join('orders o', 'p.orderno = o.orderno') ->where('j.projid=:id', array(':id'=>$id)) ->order('j.jobno,j.projid') ->queryRow(); 

Я думаю, что вы должны удалять проекты, заказы от ->from('jobs, projects, orders') и может быть, вы должны опустить дело jobs.PROJID поскольку в сообщении об ошибке говорится, что он не смог найти столбец.