Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php yii多重内连接_Php_Mysql_Yii - Fatal编程技术网

Php yii多重内连接

Php yii多重内连接,php,mysql,yii,Php,Mysql,Yii,我正在尝试用yii编写一个查询。我有以下几种方法可以奏效 $criteria = new CDbCriteria; $criteria->condition = "($column = :id)"; $criteria->params = array(":id" => $id ); $rows = Jobs::model()->with('pROJ')->findAll($criteria); 这将返回数组中作业的模型。我需要用yii编写以下查询以返回模型 SE

我正在尝试用yii编写一个查询。我有以下几种方法可以奏效

$criteria = new CDbCriteria;
$criteria->condition = "($column = :id)";
$criteria->params = array(":id" =>  $id );
$rows = Jobs::model()->with('pROJ')->findAll($criteria);
这将返回数组中作业的模型。我需要用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中的所有列都是大写的

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 

我认为您应该从('jobs,Project,orders')中删除项目,订单,可能您应该降低
作业的大小写。PROJID
因为您的错误消息说它找不到列。

我认为您应该从('jobs,Project,orders')中删除项目,订单并且可能是,您应该降低作业的大小写。PROJID,因为您的错误消息说它找不到列。

正如@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();

正如@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();

在某些操作系统上,如Linux,MySQL表/列名区分大小写。
SELECT。。。projects.orderno。。。加入项目p
。您将
projects
别名为
p
,因此无法再使用
projects
。在某些操作系统上,如Linux,MySQL表/列名区分大小写。
选择。。。projects.orderno。。。加入项目p
。您将
projects
别名为
p
,因此无法再使用
projects