sql >> Database >  >> RDS >> Mysql

Rest van rij weergeven met null of 0 op zijn plaats voor kolommen niet gevonden

Als ik het goed begrijp, moet je een OUTER JOIN . gebruiken om resultaten te krijgen voor de ontbrekende maanden, maar je hebt ook een CROSS JOIN . nodig om de bedrijfsnaam correct te krijgen -- zo niet, dan wordt deze weergegeven als 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. UTL_SMTP verschil tussen DATA, WRITE_DATA en WRITE_RAW_DATA

  2. onCreate() van RoomDatabase.Callback() is niet aangeroepen na een succesvolle aanroep van .build()

  3. Twee tabellen samenvoegen met een verschillend aantal kolommen

  4. Paginering van MySQL-resultaten in PHP