sql >> Database teknologi >  >> RDS >> Mysql

Vis resten af ​​rækken med null eller 0 på plads for kolonner, der ikke blev fundet

Hvis jeg forstår det rigtigt, skal du bruge en OUTER JOIN for at få resultater for de manglende måneder, men du skal også bruge en CROSS JOIN for at få firmanavnet korrekt -- hvis ikke, vises det som 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


  1. MySQL 8 ignorerer heltalslængder

  2. Laravel udsender et andet output end MySQL-forespørgsel

  3. Nodejs Cluster med MySQL-forbindelser

  4. SQL QUERY flere søgninger i én række for at finde data fra en anden række i samme tabel