2
--work--
day    hours 
 4       8
 5       9
 6       8


 --crew--
employee     day
   2          4
   3          4
   6          4  
   2          5
   3          5
   4          5

--break--
hours    day    employee
  1       4        2
  .5      5        3

これが私が持っているSQLクエリです:

 SELECT w.hours, w.hours-b.hours,  c.employee
 FROM work w
 LEFT JOIN crew c ON w.day = c.day
 LEFT JOIN break b ON w.day = b.day
 WHERE w.day = 4

これは、すべての従業員から1時間を差し引くことです

break.hoursその従業員が休憩した場合にのみ、を減算したい。彼がいない場合、私は単に欲しいですwork.hours

4

1 に答える 1

4

COALESCEは、あなたが必要とすることすべてです。

SELECT  a.employee,
        a.day,
        b.hours - COALESCE(c.hours,0) totalHours
FROM    crew a
        INNER JOIN work b
            ON a.day = b.day
        LEFT JOIN `break` c
            ON a.employee = c.employee AND
                a.day = c.day
-- WHERE    b.day = 4
于 2012-12-29T06:31:55.693 に答える