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
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。