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

MYSQLでSUMの問題があるテーブルを結合する

    メインクエリで複数の結合を使用すると、すべてのテーブルの外積が発生するため、合計に別のテーブルで一致する行の数が乗算されます。合計をサブクエリに移動する必要があります。

    SELECT last_name, first_name, DATE_FORMAT(LEAST(mil_date, tm_date),  '%m/%d/%y' ) AS dates, 
            total, minutes
    FROM bhds_teachers AS i
    LEFT JOIN (
        SELECT ds_id, YEARWEEK(mil_date) AS week, MIN(mil_date) AS mil_date, SUM(drive_time) AS minutes
        FROM bhds_mileage
        WHERE mil_date BETWEEN '2016-04-11' AND  '2016-04-30'
        AND bhds_mileage.ds_id = 5
        GROUP BY ds_id, week) AS m 
    ON m.ds_id = i.ds_id
    LEFT JOIN (
        SELECT ds_id, YEARWEEK(tm_date) AS week, MIN(tm_date) AS tm_date, SUM(tm_hours) AS total
        WHERE tm_date BETWEEN '2016-04-11' AND '2016-04-30' AND bhds_timecard.ds_id = 5
        GROUP BY ds_id, week) AS t 
    ON t.ds_id = i.ds_id AND t.week = m.week
    


    1. Moodle用のPostgreSQLを監視するためのヒント

    2. Oracle PL / SQL-コレクション(ネストされたテーブル)

    3. ボイラープレートの美しいブロック

    4. サンプルDWデータベースAdventureWorksDW2019の復元