Mysql
 sql >> база данни >  >> RDS >> Mysql

Присъединяване на таблици с проблем SUM в MYSQL

Когато използвате множество обединявания в основната заявка, в крайна сметка получавате кръстосано произведение на всички таблици, така че сумите се умножават по броя на редовете, съвпадащи в друга таблица. Трябва да преместите сумите в подзаявки.

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. MySQL:множество таблици или една таблица с много колони?

  2. Amazon EC2, mysql прекратява стартирането, защото InnoDB:mmap (x байта) не успя; грешка 12

  3. Как извличате числова стойност от низ в MySQL заявка?

  4. Вземете сумата на MySQL колоната в PHP

  5. MySQL:Предоставяне на **всички** привилегии на база данни