Как отобразить группу с помощью mysql в массиве?

#php #mysql #arrays #group-by

#php #mysql #массивы #group-by

Вопрос:

У меня есть эти данные

 ID DATEREG     REQUEST
1  2016-10-24  PAPER
2  2016-10-24  PENCIL
3  2016-10-24  BALLPEN
4  2016-10-25  PAPER
5  2016-10-26  PENCIL
  

вот запрос, который я использую для вычисления общего запроса.

     $rows = '';
    $query = "SELECT id,count(*) as total,date,request FROM list GROUP BY date,request ORDER BY id DESC LIMIT 10";
    $result = mysqli_query($con,$query);
    $total_rows =  $result->num_rows;
    if($result) 
    {
    $rowsv1 = mysqli_fetch_all($result, MYSQLI_ASSOC);
    print "<pre>";
    echo print_r($rowsv1);
    print "</pre>";
    }
  

и пример результата, в котором запрос отображает только 1 (порядок следования):

 [0] => Array
    (
        [id] => 5
        [total] => 3
        [datereg] => 2016-10-24
        [request] => PAPER
    )
  

Я хочу выглядеть так:

 [0] => Array
    (
        [id] => 5
        [total] => 3
        [datereg] => 2016-10-24
        [request1] => 1(total of PAPER)
        [request2] => 2(total of PENCIL)
        [request3] => 3(total of BALLPEN)
    )
  

Спасибо

Ответ №1:

Я немного изменил ваш запрос, так что теперь сначала он группируется по запросам, а затем по дате. Но вам придется агрегировать результат в вашем php, чтобы все 3 запроса были размещены в одном элементе массива

    $query = "SELECT id,count(*) as total,date,request FROM list GROUP BY request, date ORDER BY id DESC LIMIT 10";
  

В противном случае он будет сгруппирован по дате, что приведет к агрегированию результата для данной даты только по одному запросу.