Ran*_*ana 5 php mysql doctrine dql doctrine-orm
我有一个DQL,如下所示:
SELECT at, count(at.id) FROM AccountTriple at JOIN at.property p JOIN at.account ac WHERE p.create_analytics = '1' GROUP BY at.property, at.value, ac.service
Run Code Online (Sandbox Code Playgroud)
如您所见,它具有三个联接。由于“ at”和“ ac”都具有大量数据。为了优化它,我尝试在连接到“ ac”之前移动“ p.create_analytics ='1'”检查,以便为它提供一个较小的要连接的数据集。我正在尝试实现以下目标:
SELECT at, count(at.id) FROM ( SELECT at FROM AccountTriple at JOIN at.property p WHERE p.create_analytics = '1' ) JOIN at.account ac GROUP BY at.property, at.value, ac.service
Run Code Online (Sandbox Code Playgroud)
但是以某种方式,我的语法不起作用。错误消息如下所示:
语义错误]行0,第29行靠近'((在FROM处的选择):错误:类'('未定义。
在其他任何地方也找不到类似的示例。有谁能帮助修复此DQL查询以使其正常工作?提前致谢。
使用该createSubquery()函数在Doctrine中创建子查询。然后,您可以将子查询嵌套到主查询中。
// build root query
$query = Doctrine_Query::create()
->from('Movie m')
->where('name = ?', 'Prometheus')
;
// build subquery
$subquery = $query->createSubquery()
->from('SeenMovie sm')
->where('m.name = sm.name')
;
// nest subquery and execute
$query->where('EXISTS (' . $subquery->getDql() . ')')->execute();
Run Code Online (Sandbox Code Playgroud)
进一步阅读
用于创建任何复杂性的学说子查询的防弹模式
| 归档时间: |
|
| 查看次数: |
2823 次 |
| 最近记录: |