MySQL Query: подсчет и сортировка по многократному регистру с PHP - PullRequest
0 голосов
/ 12 июня 2018

Мне нужно сгенерировать статистику для моей системы тикетов, используя php.В таблице tickets каждый тикет присваивается техническому специалисту, а компания, запросившая поддержку, хранится в project_id.

Итак, я хочу подсчитать, какие компании имеют больше проблем,Я попробовал с это и это , и это помогает мне посчитать, что 22 компании из всех 90 компаний, которые у меня есть, открыли билеты.

Так как мне нужно показать5 крупнейших компаний с наибольшим количеством открытых билетов, я написал эту функцию:

public static function getAllProjectsWithProblems(){
    $sql = "select project_id, count(*) as c from ".self::$tablename." group by project_id having count(project_id)>=1 order by c desc limit 5";
    $query = Executor::doit($sql);
    return Model::many($query[0],new TicketData());
}

Теперь мне нужно знать количество билетов, которые у них есть.

Это будет примериз БД:

id --------------     description    ------- project_id 
1  -------------- This is an example -------     1
2  -------------- This is an example -------     1
3  -------------- This is an example -------     1
4  -------------- This is an example -------     1
5  -------------- This is an example -------     2
6  -------------- This is an example -------     2
7  -------------- This is an example -------     2
8  -------------- This is an example -------     3
9  -------------- This is an example -------     4
10 -------------- This is an example -------     4
11 -------------- This is an example -------     4
12 -------------- This is an example -------     4
13 -------------- This is an example -------     4
14 -------------- This is an example -------     4
15 -------------- This is an example -------     5

Желаемый результат:

Companies with issues: (5)
Company 4 = 6 issues
Company 1 = 4 issues
Company 2 = 3 issues
Company 3 = 1 issue
Company 5 = 1 issue

Результат, который я получаю:

Companies with issues: (5)
Company 4
Company 1
Company 2
Company 3
Company 5

Это HTML:

       <div class="card" style="position: relative; left: 0px; top: 0px;">
           <div class="card-header ui-sortable-handle" style="cursor: move;">
             <h3 class="card-title">
               <i class="ion ion-clipboard mr-1"></i>
               Top 5 companies with issues
             </h3>
           </div>
           <div class="card-body">
               <ul class="todo-list ui-sortable">
                 <?php
                 $users = array();{
                     $users = TicketData::getAllProjectsWithProblems();             
                 }
                 if (count($users) > 0) {
                     // count if there are users
                 ?>
                    <?php
                        foreach ($users as $user) {
                         $project = $user->getProject();
                    ?>
                    <li>
                    <span class="text"> <?php echo$project->id; ?>: //insert number of tickets here// </span>
                 </li>
                    <?php } ?>
                 <?php
                    } else {
                        echo "<p class='alert alert-danger'>You don't have open tickets.</p>";
                    }
                 ?>
             </ul>
           </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...