Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dołącz do tabel z problemem SUM w MYSQL

Gdy w zapytaniu głównym używasz wielu sprzężeń, otrzymujesz iloczyn krzyżowy wszystkich tabel, więc sumy są mnożone przez liczbę pasujących wierszy w innej tabeli. Musisz przenieść kwoty do podzapytań.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Najłatwiejszy sposób na dodanie wielu spacji do ciągu w MySQL — SPACE()

  2. Zabezpieczanie serwera MySQL

  3. Jak stworzyć sekwencję w MySQL?

  4. Znajdowanie zduplikowanych wartości w MySQL

  5. Wprowadzenie do typów danych MySQL