Yii 如何通过加入2个TBL获得最新记录?

Yii 如何通过加入2个TBL获得最新记录?,yii,Yii,我有两桶 顾客 id | name | 1 | aa | 2 | bb | 工作单 id | desc | c_id (customer id) | created_date 1 | abcde | 1 | 2013-11-18 01:00:00 2 | fghij | 1 | 2013-11-19 10:00:00 3 | klmno | 2 | 2013-11-19

我有两桶

顾客

id | name | 
1  | aa   |
2  | bb   |
工作单

id | desc  | c_id (customer id) | created_date
1  | abcde | 1                  | 2013-11-18 01:00:00
2  | fghij | 1                  | 2013-11-19 10:00:00
3  | klmno | 2                  | 2013-11-19 11:00:00
我想要下面的记录

customer name | workorder_id | desc  | date
bb            | 3            | klmno | 2013-11-19 11:00:00
aa            | 2            | fghij | 2013-11-19 10:00:00
SELECT t.*
FROM (SELECT c_id, wo_id, MAX(created_date) as MaxTime
      FROM workorders
      GROUP BY c_id) r
INNER JOIN workorders t ON t.c_id = r.c_id AND t.created_date = r.MaxTime
我想把它添加到cgridview中。如何在yii框架下编写CDBC标准

================================================================================

更新

我找到了从workorders tbl获取最新记录的查询,如下所示

customer name | workorder_id | desc  | date
bb            | 3            | klmno | 2013-11-19 11:00:00
aa            | 2            | fghij | 2013-11-19 10:00:00
SELECT t.*
FROM (SELECT c_id, wo_id, MAX(created_date) as MaxTime
      FROM workorders
      GROUP BY c_id) r
INNER JOIN workorders t ON t.c_id = r.c_id AND t.created_date = r.MaxTime
但我不知道如何加入客户tbl并创建CDB标准。请帮帮我

==========================================================================================

最后一个查询(正确的查询)


如果您有递增的主键,只需使用order by primary key列,decsending

ORDER BY `id` DESC
如果您使用的是标准

$criteria->order = 'id DESC';
如果命令生成器

 ->order->('id DESC');

->订单->(“日期描述”)

我认为像这样的事情应该会起作用:

$result = Yii::app()->db->createCommand()
->select('c.name , w.id , w.desc , w.created_date as date')
->from('workorders w')
->join('customers c ' ,'w.c_id = c.id')
->order('w.date DESC')
->group('w.c_id')
->limit('10')
->queryAll()

如果不向workorders表添加外键,则首先需要添加外键约束

查询

ALTER TABLE workorders ADD FOREIGN KEY (c_id) REFERENCES customers(id)
然后通过gii代码生成器,为WorkOrder创建模型类,然后创建控制器类。 若你们对gii代码生成器并没有任何概念,那个么下面的链接是为你们准备的

观看所有视频,了解yii的工作原理

然后你有三个不同的文件

  • models/workorders.php
  • 控制器/WorkordersController.php
  • Views/workorders/index.php
我还为客户创建了模型,但我认为不需要客户模型,但若它给出错误,那个么您也会生成客户模型。 现在,您应该开始处理workorders控制器文件。并将actionIndex函数代码替换为以下给定代码

public function actionIndex()
    {
       $connection = Yii::app()->db;
       $sql        = "SELECT t1 . * , t2 . * FROM workorders t1 
            INNER JOIN customers t2 ON t1.c_id = t2.id
            INNER JOIN (
            SELECT MAX( workorders.date ) maxts, c_id
            FROM workorders
            INNER JOIN customers ON workorders.c_id = customers.id
            GROUP BY c_id
            )t3 ON t2.id = t3.c_id
            AND t1.date = t3.maxts";
            $command    = $connection->createCommand($sql)->queryAll();
            $this->render('index', array('content' => $command));
    }
并在视图索引文件中编写以下代码

foreach($content as $cont=>$value) {
  echo $value['name']." ".$value['id'] ." ". $value['des'] ." ".$value['date'] ."<br>";
}
foreach($cont=>$value形式的内容){
回显$value['name'].'.$value['id'.'.$value['des'.'.$value['date'.][br>”;
}
你得到了你想要的结果


谢谢

哪张表最新?我有2个TBL(客户和工作订单)。在加入2个以上的TBL(客户和工单)后,我想要的是最下面的一个。和“按日期说明订购”。如何操作?我想按日期说明订购,并按客户分组。我上面的查询是检索工单tbl的1和3。实际记录应为3和2。