Nếu tôi hiểu đúng, bạn cần sử dụng OUTER JOIN
để nhận kết quả cho những tháng còn thiếu, nhưng bạn cũng cần có CROSS JOIN
để lấy tên Công ty một cách chính xác - nếu không, nó sẽ hiển thị dưới dạng NULL
:
SELECT months.month,
SUM(job_details.price_each*job_details.quantity) AS sum_monthly_price,
DATE_FORMAT(job.order_date, '%M') AS order_date,
customer.company_name
FROM months CROSS JOIN customer
LEFT JOIN job on job.company_id = customer.company_id
AND months.month = month(job.order_date)
LEFT job_details on job.job_id = job_details.job_id
WHERE months.month > month(date_sub(NOW(), INTERVAL 4 month))
AND months.month <= month(NOW())
AND customer.company_id = 6
GROUP BY months.month
ORDER BY months.month asc