php – Doctrine上的复杂SQL查询
发布时间:2020-12-13 16:52:20 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试使用Doctrine 2实现复杂的SQL查询. 但是,我的SQL查询有子选择.我认为这是’问题,但我无法实现解决这个问题的方法. SELECT x.year,x.month,y.total FROM(SELECT YEAR(a.date) year,MONTH(a.date) month,count(*) number FROM Acessos a GROUP BY YE
我正在尝试使用Doctrine 2实现复杂的SQL查询.
但是,我的SQL查询有子选择.我认为这是’问题,但我无法实现解决这个问题的方法. SELECT x.year,x.month,y.total FROM (SELECT YEAR(a.date) year,MONTH(a.date) month,count(*) number FROM Acessos a GROUP BY YEAR(a.date),MONTH(a.date)) x INNER JOIN (SELECT MAX(Z.number) total FROM (SELECT COUNT(a.id) number FROM Acessos a GROUP BY YEAR(a.date),MONTH(a.date)) z) y ON x.number = y.total LIMIT 1 当我把这个查询运行到trhu代码时,我得到一个QueryException. <b>Fatal error</b>: Uncaught exception 'DoctrineORMQueryQueryException' with message 'SELECT x.messelecionado,x.anoselecionado,y.total from (select month(a.data) messelecionado,year(a.data) anoselecionado,count(*) numero from Acesso a group by month(a.data),year(a.data)) x inner join (select max(z.numero) total from (select count(a.id) numero from Acesso a group by month(a.data),year(a.data)) z) y on x.numero = y.total limit 1' in C:xampphtdocspatclinappDoctrineORMQueryQueryException.php:39 Stack trace: #0 C:xampphtdocspatclinappDoctrineORMQueryParser.php(429): DoctrineORMQueryQueryException::dqlError('SELECT x.messel...') #1 C:xampphtdocspatclinappDoctrineORMQueryParser.php(854): DoctrineORMQueryParser->semanticalError('Class '(' is no...',Array) #2 C:xampphtdocspatclinappDoctrineORMQueryParser.php(1529): DoctrineORMQueryParser->AbstractSchemaName() #3 C:xampphtdocspatclinappDoctrineORMQueryParser.php(1426): DoctrineORMQueryParser->RangeVariableDeclaration() #4 C:x in <b>C:xampphtdocspatclinappDoctrineORMQueryQueryException.php</b> on line <b>49</b><br /> 谁知道我该怎么办? 谢谢!!! 解决方法
您使用group by子句编写的YEAR函数不会被学说理解.你必须为此注册自定义dql函数.
这是doctrine提供的dql函数列表: http://docs.doctrine-project.org/en/latest/reference/dql-doctrine-query-language.html#dql-functions 这是创建自己的dql函数的链接 groupby也只使用聚合函数(AVG,COUNT,MIN,MAX,SUM) 此链接可能对您有所帮助 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |