Я работаю над системой расписания PHP/MySQL, и отчет, который я хочу создать, выбирает всех сотрудников, которые работали меньше необходимого количества времени между двумя датами. Время работы сотрудника хранится в часах и минутах (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
Так что, если я ВЫБРАТЬ сотрудников, которые работали менее чем за 5 часов (PHP переменная hrsLimit) на 2013-07- 25, он должен вернуть 2 Фреда, так как Джордж работал в общей сложности 5 часов в этот день. У меня есть HTML-форма, поэтому пользователь может установить переменные для запроса.
Я попытался:
SELECT employeeid,
employeename
FROM employee
JOIN timesheet_entry tse
ON tse.tse_employeeid = employeeid
AND Sum(tse.hour) < $hrslimit
Я не беспокоюсь о дате еще.
Путаница здесь заключается в том, что мы соединяем две таблицы. Возможно, я должен выбрать часы и вместо этого поставить предложение SUM в конце в WHERE?
'сумма (час), как sum_hour' ', а затем имеющие sum_hour <$ hrslimit' не должны иметь более высокую производительность? – jaczes
@jaczes Хорошо. Я думаю, что оптимизатор SQL сделает производительность такой же. – valex
@valex Спасибо, и спасибо за быстрый ответ. Мой пример не был лучшим, все в тот же день, но теперь я добавил предложение GROUP BY date BETWEEN http://sqlfiddle.com/#!2/1e454/3, чтобы завершить мое решение. Еще раз спасибо –