#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";
В противном случае он будет сгруппирован по дате, что приведет к агрегированию результата для данной даты только по одному запросу.