我是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