Mysql
 sql >> Base de données >  >> RDS >> Mysql

Afficher le reste de la ligne avec null ou 0 en place pour les colonnes introuvables

Si je comprends bien, vous devez utiliser un OUTER JOIN pour obtenir des résultats pour les mois manquants, mais vous avez également besoin d'un CROSS JOIN pour obtenir le nom de la société correctement -- sinon, il apparaîtra comme 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