选择MYSQL考勤

时间:2016-01-13 04:56:06

标签: php mysql

我有3张桌子

**User**<br>
**ID | name                   | npm        | dept | created**
  1  | TOTOK HERDIYANTO       | NULL       | 24   | 2016-01-12 09:05:13
  5  | BIMA BRAHMANA          | NULL       | 24   | 2016-01-12 09:05:13
  7  | IDA FARIDA             | NULL       | 24   | 2016-01-12 09:05:13
 30  | AHMAD MAULANA          | NULL       | 23   | 2016-01-12 09:05:13
 47  | DINI GANDINI PURBANINGR| NULL       | 24   | 2016-01-12 09:05:13
 58  | ANWAR JAYANINGRAT      | NULL       | 23   | 2016-01-12 09:05:13
 86  | Yudia Natakusuma       | NULL       | 24   | 2016-01-12 09:05:13
 96  | DENNY GANJAR P         | NULL       | 23   | 2016-01-12 09:05:13
106  | NOFI FIRDIYARTI        | NULL       | 24   | 2016-01-12 09:05:13
108  | RIAMA MILA THERESIA    | NULL       | 22   | 2016-01-12 09:05:13
118  | PRATIWI KUSUMA DEWI    | NULL       | 24   | 2016-01-12 09:05:13
126  | Shindi Azalika Nur Fala| 08.1014.022| 22   | 2016-01-12 9:05:13
128  | M. Bayu Edigani Putra  | NULL       | 22   | 2016-01-12 09:05:13
143  | Ardini Yati            | 08.0914.020| 22   | 2016-01-12 09:05:13
150  | Dhenaldi Savirio Firman| NULL       | 22   | 2016-01-12 09:05:13
153  | Rakha Prisma Ardyan    | NULL       | 22   | 2016-01-12 09:05:13
154  | Trisna Darapuspa       | NULL       | 22   | 2016-01-12 09:05:13

**Department**
**ID | name**
  25 | Finance
  23 | ICT
  22 | Marketing
  24 | SDM, Umum dan Legal

**attendance**
**userID | date       | in       | out**
    1    | 2015-01-12 | 09:05:13 | 17:30:02
    7    | 2015-01-12 | 09:05:13 | 17:30:02
   30    | 2015-01-12 | 09:05:13 | 17:30:02
   47    | 2015-01-12 | 09:05:13 | 17:30:02
   58    | 2015-01-12 | 09:05:13 | 17:30:02
   86    | 2015-01-12 | 09:05:13 | 17:30:02
  106    | 2015-01-12 | 09:05:13 | 17:30:02
  108    | 2015-01-12 | 09:05:13 | 17:30:02
  118    | 2015-01-12 | 09:05:13 | 17:30:02
  126    | 2015-01-12 | 09:05:13 | 17:30:02
  128    | 2015-01-12 | 09:05:13 | 17:30:02
  143    | 2015-01-12 | 09:05:13 | 17:30:02
  150    | 2015-01-12 | 09:05:13 | 17:30:02
  153    | 2015-01-12 | 09:05:13 | 17:30:02
  154    | 2015-01-12 | 09:05:13 | 17:30:02

我希望我的结果如下:

**where**
date = 2015-01-12 // yyy-mm-dd
deptid = in(23,24)

**RESULT**
**userID | date       | in       | out**
    1    | 2015-01-12 | 09:05:13 | 17:30:02
    5    | 2015-01-12 | 
    7    | 2015-01-12 | 09:05:13 | 17:30:02
   47    | 2015-01-12 | 09:05:13 | 17:30:02
   58    | 2015-01-12 | 09:05:13 | 17:30:02
   86    | 2015-01-12 | 09:05:13 | 17:30:02
   96    | 2015-01-12 | 
  106    | 2015-01-12 | 09:05:13 | 17:30:02
  118    | 2015-01-12 | 09:05:13 | 17:30:02
  153    | 2015-01-12 | 09:05:13 | 17:30:02
  154    | 2015-01-12 | 09:05:13 | 17:30:02

3 个答案:

答案 0 :(得分:1)

结果集不得包含以下两行:

5 | 2015-01-12 | | 
96 | 2015-01-12 | | 

因为他们不符合您提到的标准(相关用户不在考勤表中)。除非您将标准更改为:

where
date = 2015-01-12 // yyy-mm-dd
  **OR**
deptid = in(23,24)

答案 1 :(得分:0)

此查询将为您提供输出。

select a.userID, a.date, a.in, a.out from attendance a 
inner join user u on u.ID = a.userID 
inner join Department d on u.dept = d.ID
where d.ID in (23,24) and u.date = '2015-01-12'

由于 阿米特

答案 2 :(得分:0)

尝试LEFT JOIN以获得您想要的结果。如下。..

SELECT 
    u.ID,
    a.date,
    a.in,
    a.out
FROM User AS u
    LEFT JOIN attendance AS a
    ON u.ID = a.userID 
    AND a.date = '2015-01-12' 
    AND u.dept IN (23,24)