У меня есть два сотрудника таблицы и посещаемость.Несколько операторов sql или циклов и условий
сотрудник: EmpId, EmpName
посещаемость: attendanceID, EmpId, дата, Интайм, outTime
Мне нужно, чтобы показать эти данные в виде таблицы, где имя сотрудника в левой части, а затем даты. Поэтому заголовки столбцов будут похожи на Emp Name, 1,2,3,4 ...., 30, с или без данных, количество дней в месяце должно быть напечатано.
Я понял три способа сделать это.
Получить данные о посещении и сотрудниках в запросе на соединение с помощью empID. Затем прокрутите данные и распечатайте их, если они соответствуют текущей дате. Это будет продолжаться до тех пор, пока empID не изменит текущий цикл.
Цикл через сотрудников, затем цикл в течение нескольких дней в месяце, в каждой записи поступают из базы данных для конкретного сотрудника и конкретные даты.
foreach($employees as $emp) { $empID = $emp['empID']; for($day =1; $day<=$maxDaysInTheMonth $day++) { $attendance = getAttendanceFromDatabase($empID,$day); } }
Чтобы сделать работу лучше, мы стараемся свести к минимуму соединения с базой данных и ненужных петель. Мне нравится реализовать второй способ, поскольку он имеет минимальные условия, а циклы и код чисты. Но он делает поиск базы данных для каждого сотрудника каждый день. Может кто-нибудь указать на некоторые факты для производительности, пожалуйста.
Да. Меньше очередей, как правило, лучше. В этом случае 1 запрос кажется достаточным – Strawberry