gpt4 book ai didi

mysql - Yii CDbCriteria 根据另一个表的计数选择行

转载 作者:行者123 更新时间:2023-11-29 12:24:51 26 4
gpt4 key购买 nike

我有一个帖子表和一个用户表。帖子使用帖子表中的authorId 列链接到用户。我想使用 CGridView 的 CDbCriteria 选择至少拥有一篇或多篇帖子的用户。下面是我正在尝试实现的 sql 查询。

SELECT * 
FROM user
WHERE ID IN
(SELECT creatorId FROM video GROUP BY creatorId HAVING count(*) > 0)

这是我到目前为止所尝试过的。

$criteria=new CDbCriteria;
$criteria->with = array('videoCount');

$criteria->addCondition('t.status=1');
$criteria->addCondition('videoCount>0');

这不起作用,因为“videoCount”是一个关系。

我该如何实现这个目标?我使用的是 Yii 1.1.15。

最佳答案

如果可以的话,尝试使用查询生成器,因为这会很容易

$query = Yii::app()->db->createCommand()
->select()
->from('user')
->where(array('in','ID', Yii::app()->db->createCommand()
->select('creatorId')
->from('video')
->group('creatorId')
->having('count(*) > 0')->queryColumn()))
->queryAll();

这将执行所需的查询

SELECT * FROM `user` WHERE `ID` IN ('SELECT `creatorId` FROM `video` GROUP BY `creatorId` HAVING count(*) > 0')

更新

如果您想坚持使用CDbCriteria,那么您可以尝试这个

$criteria = new CDbCriteria();
$criteria->addCondition('ID IN (SELECT creatorId FROM video GROUP BY creatorId HAVING count(*) > 0)');

注意:-我还没有测试过这个标准,但希望它能起作用。

关于mysql - Yii CDbCriteria 根据另一个表的计数选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28475501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com