首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件和的DQL

条件和的DQL
EN

Stack Overflow用户
提问于 2015-07-01 18:15:54
回答 1查看 971关注 0票数 1

我有一个这样的DQL:

代码语言:javascript
复制
$dql = "SELECT d.name, "
. "SUM(m.id and m.status = 'a') members, "
. "SUM(m.position_id = 19 and m.status = 'a') subcon, "
. "SUM(m.position_id = 20 and m.status = 'a') ojt, "
. "SUM(m.status = 'h') hr_intra "
. "FROM OssOrgBundle:User m "
. "RIGHT JOIN OssOrgBundle:Department d "
. "ON m.department = d.id "
. "GROUP BY d.id";

$qb = $em->createQuery($dql);
deptListCount = $qb->getResult();

理论是否支持内部有条件的聚合函数SUM?我在SQL中尝试了这个查询,它工作了。我在将它转换为DQL时遇到了问题

我还使用以下命令完成了此操作:

代码语言:javascript
复制
$deptListCount = $em->createQueryBuilder("r")
->select("d.name")
->addSelect("SUM(m.id AND m.status = 'a') members")
->addSelect("SUM(m.position_id = 19 and m.status = 'a') subcon")
->addSelect("SUM(m.position_id = 20 and m.status = 'a') ojt")
->addSelect("SUM(m.status = 'h') hr_intra ")
->from("OssOrgBundle:Department", "d")
->leftJoin("OssOrgBundle:User", "m", "WITH", "m.deprtment = :id")
->groupBy("d.id")
->getQuery()
->getResult(AbstractQuery::HYDRATE_ARRAY);

还是不能工作

EN

回答 1

Stack Overflow用户

发布于 2015-07-01 18:20:43

不,在理论中,您需要为条件sum使用case when

代码语言:javascript
复制
sum( case when m.position_id = 19 and m.status = 'a' then 1 else 0 end ) as subcon

更改DQL中的其余部分,还

m.id AND m.status = 'a'不确定您尝试应用的是什么逻辑,我假设您正在寻找如下内容

代码语言:javascript
复制
sum( case when m.id is not null and m.status = 'a' then 1 else 0 end ) as members
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31158534

复制
相关文章

相似问题

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