0

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

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

$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 Query 来完成我的任务,但我似乎无法将它纳入 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
4

0 回答 0