sql >> データベース >  >> RDS >> Mysql

見つからない列については、nullまたは0を使用して残りの行を表示します

    私が正しく理解している場合は、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
    


    1. トリガーを発生させるインサートを備えたMySQLデッドロック

    2. 制限付きのGROUP_CONCAT

    3. OraOLEDBを使用するには何をインストールする必要がありますか

    4. MySQLのリレーショナルデータベース設計に関するクイックヒント