So i have this database table
From that table i want to achievie this (My Expected result)
I don’t know the best way to handle this, so for now i create two query.
My first query
JavaScript
x
SELECT * FROM ( select convert(created_date,date) created_date,code,'' code2,count(code) total, 0 total2
from morning_briefing
where convert(created_date,date) = convert('" . $selected_date . "',date) and code IS NOT NULL
group by code order by created_date desc) a order by total desc
My second query
JavaScript
SELECT * FROM ( select convert(created_date,date) created_date,''code,code2,0 total,count(code2) total2
from morning_briefing
where convert(created_date,date) = convert('" . $selected_date . "',date)
and code2 IS NOT NULL
group by code2 order by created_date desc) a order by total2 desc
Below is result for my query
JavaScript
Array
(
[0] => stdClass Object
(
[created_date] => 2021-03-16
[code] => AA
[code2] =>
[total] => 2
[total2] => 0
)
[1] => stdClass Object
(
[created_date] => 2021-03-16
[code] => AB
[code2] =>
[total] => 1
[total2] => 0
)
[2] => stdClass Object
(
[created_date] => 2021-03-16
[code] => BB
[code2] =>
[total] => 1
[total2] => 0
)
)
then my second query result is this
JavaScript
Array
(
[0] => stdClass Object
(
[created_date] => 2021-03-16
[code] =>
[code2] => AB
[total] => 0
[total2] => 2
)
[1] => stdClass Object
(
[created_date] => 2021-03-16
[code] =>
[code2] => AA
[total] => 0
[total2] => 1
)
)
So, i want to merge both of the array , then i want to order total column
desc, the second order is total2
Btw, i’m using mysql table. So how can i achieve my expected result (above), thanks in advance.
Advertisement
Answer
You can loop through your $results1
and $result2
and create a new array that contains data in your expected result format.
JavaScript
$total = max(count($result1), count($result2));
$formatted = [];
for($i = 0; $i < $total; $i++) {
$formatted[] = [
'code' => isset($result1[$i]) ? $result1[$i]->code : '-',
'total' => isset($result1[$i]) ? $result1[$i]->total : 0,
'code2' => isset($result2[$i]) ? $result2[$i]->code2: '-',
'total2' => isset($result2[$i]) ? $result2[$i]->total2 : 0
];
}