首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Yii2 find() / QueryBuilder中选择具有WHERE条件的子查询

在Yii2 find() / QueryBuilder中选择具有WHERE条件的子查询
EN

Stack Overflow用户
提问于 2015-10-18 18:10:21
回答 4查看 12.2K关注 0票数 5

我能够找到子查询构建的简单示例,但是当我需要包含WHERE条件时,我无法找到解决方案。我试着模拟以下陈述..。

代码语言:javascript
运行
复制
SELECT ParentTable.*, (SELECT MAX(ChildTable.NumberField) 
                       FROM ChildTable
                       WHERE ChildTable.FK_Id = ParentTable.Id)
FROM ParentTable

我想我需要的是.

代码语言:javascript
运行
复制
$query = ParentClass::find()
        ->addSelect(
            ChildClass::find()
            ->where('childTable.fk_id=parentTable.id')
            ->max('childTable.field1')
        );

但是它给了我一个错误:列未找到:'where子句‘中的1054个未知列'parentTable.id’

编辑:包括实际的类/表名称..。

代码语言:javascript
运行
复制
$endQuery = UnitSchedule::find()
            ->where('cm_courseschedule.id=cm_unitschedule.csch_id')
            ->max('cm_unitschedule.slot');
$query = CourseSchedule::find();
$query->addSelect($endQuery);
EN

Stack Overflow用户

发布于 2015-10-18 22:44:14

尝试一下,因为它对我来说很好,我也遇到过类似的情况,我的表名是eventarea_interest

代码语言:javascript
运行
复制
 $query = new Query();
 $subquery = new Query();
 $subquery ->select(['area_intrest.interest'])
            ->from('area_intrest' )
            ->where('area_intrest.id = event.interest_id');

 $query ->select(['event.title',$query3])
            ->from('event');
 $command = $query->createCommand();
 $data = $command->queryAll();

在您的条件下,您甚至可以在引号中的子查询中使用max,它将很好地工作。

票数 1
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33201458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档