我需要用几个数据列出表中的数据。我需要获取已玩游戏的数量(“ COUNT(p.partie)as sumparties”)和获胜游戏的数量。
这是我的存储库:
$qb->select('j AS jou')
->innerJoin('j.playeds', 'p')
->addSelect('SUM(p.points) AS sumpoints')
->addSelect('SUM(p.max) AS summax')
->addSelect('COUNT(p.partie) as sumparties')
->addSelect('COUNT(p.partie) as sumwins WHERE p.points = 1')
->groupBy('j.id')
->orderBy('sumpoints', 'DESC');
因此,对于第一个它,它是有效的:
->addSelect('COUNT(p.partie) as sumparties')
我得到了总的比赛次数。但是我无法赢得一定数量的比赛。我尝试了一下,但显然不起作用:
->addSelect('COUNT(p.partie) as sumwins WHERE p.points = 1')
感谢您的帮助:)
答案 0 :(得分:1)
代替合并select
和where
:
->addSelect('COUNT(p.partie) as sumwins WHERE p.points = 1')
拆分where子句:
->addSelect('COUNT(p.partie) as sumwins')
->andWhere('p.points = 1')
编辑:
正如我在评论中提到的那样,对于您的用例,您需要执行以下操作:
->addSelect('SUM(CASE WHEN p.points = 1 THEN 1 ELSE 0 END) AS sumwins')