अगर मैं सही ढंग से समझ रहा हूं, तो आपको OUTER JOIN
. का उपयोग करने की आवश्यकता है छूटे हुए महीनों के लिए परिणाम प्राप्त करने के लिए, लेकिन आपको CROSS JOIN
. की भी आवश्यकता है कंपनी का नाम सही ढंग से प्राप्त करने के लिए -- यदि नहीं, तो यह 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