I'm fetching data from two table Tenders and payments I want to display monthly payments with monthly tenders in on array. But I need to compare if the month and year from the first loop is the same as the month and year from the nested loop
$first_sql = "SELECT YEAR(toll.transaction_date) 'year', MONTHNAME(toll.transaction_date) 'month', COUNT(toll.toll_id) 'count', SUM(toll.tender) 'tender'
FROM toll WHERE company_id = '$COMPANY_ID'
GROUP BY YEAR(toll.transaction_date), MONTHNAME(toll.transaction_date), MONTH(toll.transaction_date)
ORDER BY YEAR(toll.transaction_date) DESC, MONTH(toll.transaction_date) DESC limit 5;";
$scnd_sql = "SELECT YEAR(company_payment_detail.payment_date) 'year', MONTHNAME(company_payment_detail.payment_date) 'month', SUM(company_payment_detail.payment_amount) 'payment'
FROM company_payment_detail
JOIN company_account ON company_payment_detail.company_account_id = company_account.company_account_id
JOIN company ON company.company_id = company_account.company_id
WHERE company_account.company_id = '$COMPANY_ID'
GROUP BY YEAR(company_payment_detail.payment_date), MONTHNAME(company_payment_detail.payment_date),MONTH(company_payment_detail.payment_date)
ORDER BY YEAR(company_payment_detail.payment_date) DESC, MONTH(company_payment_detail.payment_date) DESC limit 5";
The Results
The Loops
$run_first_sql= $conn->query($first_sql);
$run_scnd_sql = $conn->query($scnd_sql);
$chart_data = [];
//first loop
while($row= $run_first_sql->fetch_assoc()){
$arr1 = array(
'y' => $row['year'],
'm' => $row['month'],
'c' => (int)$row['count'],
't' => (float)$row['tender']
);
while($row2= $run_scnd_sql->fetch_assoc()){
if($row['year'] == $row2['year'] && $row['month'] == $row2['month']){
$arr2 = array(
'p' =>(float)$row2['payment'],
);
}else{
$arr2 = array(
'p' =>(float)0,
);
}
}
$arr1 = array_merge($arr1, $arr2);
array_push($chart_data1, $arr1);
}
print_r($chart_data1);