Подберите с предложением где - PullRequest
0 голосов
/ 27 марта 2019

Мне нужно перечислить данные в таблице с несколькими данными. Мне нужно получить количество сыгранных игр («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')

Спасибо за вашу помощь:)

1 Ответ

1 голос
/ 27 марта 2019

Вместо объединения 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')

...