2

私は PHP/MySQL タイムシート システムに取り組んでおり、作成したいレポートは、2 つの日付の間で必要な時間よりも少ない時間しか働いていないすべての従業員を選択します。従業員の時間は時間と分 (INT) で保存されますが、私は時間だけに関心があります。

従業員テーブルは次のようになります。

ID | Name
1  | George
2  | Fred

timesheet_entry テーブル:

ID | employeeID | hour | date
1  | 1          | 2    | 2013-07-25
2  | 2          | 4    | 2013-07-25
3  | 1          | 3    | 2013-07-25

したがって、2013 年 7 月 25 日に勤務時間が 5 時間未満 (PHP 変数 hrsLimit) の従業員を SELECT すると、ジョージはその日に合計 5 時間勤務したため、2 Fred が返されます。ユーザーがクエリの変数を設定できるように、HTML フォームがあります。

私が試してみました:

SELECT employeeid,
       employeename
FROM   employee
       JOIN timesheet_entry tse
         ON tse.tse_employeeid = employeeid
            AND Sum(tse.hour) < $hrslimit  

日付はまだ気にしていません。

ここでややこしいのは、2 つのテーブルを結合していることです。おそらく時間を選択し、代わりに SUM 句を WHERE の最後に配置する必要がありますか?

4

1 に答える 1

2

データをグループ化し、クエリの HAVING 部分に SUM 条件を配置する必要があります。

select employee.id,
       employee.Name,
       Date,
       sum(`hour`) 
from timesheet_entry
join employee on timesheet_entry.employeeID=employee.ID
group by timesheet_entry.employeeID,date
having sum(`hour`)<$hrslimit

SQLFiddle デモ

于 2013-07-25T12:36:25.537 に答える