我正在尝试按自定义顺序对一组结果进行排序。查询执行表中所有值的总和,并按特定类型对它们进行分组。我想按类型对记录进行排序,但这不是按字母顺序排列的格式。
这些是我想要结果的值和顺序:
Prevention
Minimisation
Reuse
Recycling
Energy Recovery
Disposal
以下是我使用的查询:
$wasteHierarchy = $dm->createQuery('
SELECT SUM(efu.totalUom) AS totalTonne, efu.wasteHierarchy
FROM CoreBundle:EnviroFiguresUpload efu
WHERE efu.completionDate BETWEEN :start AND :end
AND efu.division IN (:profile)
GROUP BY efu.wasteHierarchy
ORDER BY efu.completionDate DESC'
)->setParameters(array(
'start' => $ds,
'end' => $de,
'profile' => $divisionProfiles
));
$wasteHier = $wasteHierarchy->getResult();
我已尝试过此查询,但它在Symfony2中抛出错误:
$wasteHierarchy = $dm->createQuery('
SELECT SUM(efu.totalUom) AS totalTonne, efu.wasteHierarchy
FROM CoreBumysql order by resultndle:EnviroFiguresUpload efu
WHERE efu.completionDate BETWEEN :start AND :end
AND efu.division IN (:profile)
GROUP BY efu.wasteHierarchy
ORDER BY efu.wasteHierarchy = :prevention, efu.wasteHierarchy = :minimisation, efu.wasteHierarchy = :reuse, efu.wasteHierarchy = :recycling, efu.wasteHierarchy = :energy, efu.wasteHierarchy = :disposal'
)->setParameters(array(
'start' => $ds,
'end' => $de,
'profile' => $divisionProfiles,
'prevention' => 'Prevention',
'minisation' => 'Minimisation',
'reuse' => 'Reuse',
'recycling' => 'Recycling',
'energy' => 'Energy Recovery',
'disposal' => 'Disposal'
));
$wasteHier = $wasteHierarchy->getResult();
有什么想法吗?
编辑1
这是Symfony2生成的错误:
[2/2] QueryException:[语法错误]第0行,第260行:错误:预期 字符串的结尾,得到了' ='
[1/2] QueryException:SELECT SUM(efu.totalUom)AS totalTonne, efu.wasteHierarchy来自CoreBundle:EnviroFiguresUpload efu WHERE efu.completionDate BETWEEN:开始AND:结束和efu.division IN (:profile)GROUP BY efu.wasteHierarchy ORDER BY efu.wasteHierarchy = :预防ASC,efu.wasteHierarchy =:最小化ASC, efu.wasteHierarchy =:重用ASC,efu.wasteHierarchy =:回收ASC, efu.wasteHierarchy =:energy ASC,efu.wasteHierarchy =:废弃ASC +
答案 0 :(得分:1)
在SQL中,您只能按列排序,而不能按列值排序。 这就是QueryException的原因。
有可能在mysql中做你想要的(也可能在其他dbms中):ORDER BY FIELD
答案 1 :(得分:0)
SQL
的这一部分是错误的:
ORDER BY efu.wasteHierarchy = :prevention, efu.wasteHierarchy = :minimisation, efu.wasteHierarchy = :reuse, efu.wasteHierarchy = :recycling, efu.wasteHierarchy = :energy, efu.wasteHierarchy = :disposal
您无法在ORDER BY
子句中设置值。查看此link,它解释了如何正确使用ORDER BY
。 ORDER BY
之后是ASC | DESC
关键字。
您尝试添加的所有参数可能应将其移至WHERE子句check this link以获取更多信息。