MYSQL Отдельные значения с итогами - PullRequest
3 голосов
/ 19 марта 2019

Попытка вернуть список всех моих пользователей, которые разрешили заявку, и количество разрешенных ими заявок. Этот код работает , но кажется плохой практикой делать запросы внутри цикла while.

Есть ли более эффективный способ?

//Get all users who have resolved a ticket
$stmt = $db->prepare("SELECT DISTINCT resolvedby FROM tickets");
$stmt->execute();

while($rows = $stmt->fetch()){
    $user = $rows['resolvedby'];
    echo "$user "; //Echo each user

    $new = $db->prepare("SELECT count(resolvedby) as total FROM tickets WHERE resolvedby = :u ");
    $new->bindParam('u',$user);
    $new->execute();

    $row = $new->fetch();
    echo $row['total']; //Echo the total of each user
    echo "<br />";
}

Возвращает:

User    Total Resolved
Shawn        40
David        38
Jeff         52
Frank        47

1 Ответ

4 голосов
/ 19 марта 2019

Вам нужно использовать group by с совокупным количеством функций:

SELECT
      resolvedby
    , COUNT(*) AS total
FROM
    tickets
GROUP BY
    resolvedby

Конечно, вы хотите ограничить результаты с помощью предложения WHERE.

...