В настоящее время я пытаюсь написать небольшую программу для отслеживания запросов на перерыв для сотрудников. Я довольно новичок в MYSQL и PHP, поэтому для меня это тоже учебный проект. Я столкнулся с этой проблемой, которую, похоже, не смог понять.
Я хочу отображать запросы на отключение для данной недели (пн-пт). У меня есть запросы в таблице «запросы», с «Starttime» и «Endtime» в отдельных полях, оба Date / Time.
В настоящее время я могу легко искать и извлекать запросы, которые имеют (или оба) значения Starttime или Endtime, которые находятся в пределах данной недели ISO, которую я просматриваю (WEEKOFYEAR ()).
Что мне нужно сделать, так это искать запросы, которые могут включать дни недели ISO, которую я отображаю, но не имеют времени начала или окончания в течение этой недели.
Пример:
Сотрудник вылетает со вторника недели 24 по пятницу недели 24.
В настоящее время я правильно отобразил бы, что сотрудник ушел со вторника, и показал бы возвращение в ту пятницу, но в среду и четверг ничего вводить не было.
Сотрудник вылетает с пятницы 30-й недели по понедельник 32-й недели.
В настоящее время я бы показал, что этот сотрудник не был «выключен» в течение 31 недели, потому что поиск не показывал время начала или окончания в течение этой недели, даже если он фактически не работал всю неделю. Хотя время начала и время окончания будут отмечены в правильные дни.
Прямо сейчас, чтобы обойти это, я запускаю 5 дополнительных запросов, чтобы проверить, содержится ли дата каждого дня с понедельника по пятницу в течение 31 недели МЕЖДУ временем начала и окончания каждого запроса в БД.
Я ненавижу запускать в общей сложности 6 запросов, чтобы получить эту информацию. Есть ли более простой способ получить эту информацию?