yii1如何在查询构建器

时间:2016-09-12 07:46:50

标签: yii yii1.x

我是yii1的新用户,现在我正在尝试使用查询构建器在yii1中创建以下查询。

SELECT id, parent_id FROM categories 
WHERE parent_id NOT in (SELECT distinct id) GROUP BY parent_id, id

到目前为止,我已完成以下操作:

$criteria1->select = array('t.*');
$criteria1->group = 't.parent_id, t.id';

我现在认为我的子查询需要第二个$条件

$criteria2 = new CdbCriteria;
$criteria2->addNotInCondition('t.parent_id' != ??????)
$criteria1->mergeWith($criteria2);

但是如何获得parent_id?我最后将$ criteria1返回给GridDataProvider,所以我在任何地方都没有findAll()。是否可以使用Yii Query Builder构建上述SQL,或者如何实现?

更新

$criteria->select = array('t.*');


$sql = Yii::app()->db->createCommand()
                    ->select('*')
                    ->from('categories')
                    ->text;
$criteria->addNotInCondition('parent_id',$sql);
$criteria->group = 't.parent_id, t.id';

这似乎有效,但我似乎没有得到的是没有孩子的父类别。我也无法使用上面的SQL看到它们,那么我将如何访问它们呢?

更新2

似乎我需要以下SQL查询来完成我的任务,但我似乎无法向Yii提出任何建议吗?

SELECT id, parent_id FROM categories AS a
WHERE NOT EXISTS (SELECT * FROM categories AS b WHERE a.id = b.parent_id)
GROUP BY parent_id, id

0 个答案:

没有答案