Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Rest der Zeile mit null oder 0 für nicht gefundene Spalten anzeigen

Wenn ich das richtig verstehe, müssen Sie einen OUTER JOIN verwenden um Ergebnisse für die fehlenden Monate zu erhalten, aber Sie benötigen auch einen CROSS JOIN um den Firmennamen korrekt zu erhalten – wenn nicht, wird er als NULL angezeigt :

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