Как не учитывать посещаемость / отсутствующие / поздние подсчеты на дату праздника в посещаемости в базе данных?

0

Итак, вот мой код:

SELECT s.student_id as 'Student_Number', CONCAT(IFNULL(s.student_fname,''),' ', IFNULL(s.student_mname,''),' ', IFNULL(s.student_lname,'')) 'Student_Name',s.student_program as 'Program', (SUM(IF(stat.status_description='Late',1,0))) 'Total_Lates', (SUM(IF(stat.status_description='Absent',1,0))) 'Total_Absences', Floor((SUM(IF(stat.status_description='Late',1,0))) / 3 + (SUM(IF(stat.status_description='Absent',1,0)))) 'Total_Absence_with_Lates' FROM attendance_tbl a LEFT JOIN student_tbl s ON s.student_id=a.entity_id LEFT JOIN status_tbl stat ON stat.status_id=a.status_id where a.course_id='$course' and a.entity_type='student' and CONCAT(IFNULL(s.student_fname,''),' ', IFNULL(s.student_mname,''),' ', IFNULL(s.student_lname,'')) like '%$stname%' GROUP BY a.entity_id, CONCAT(IFNULL(s.student_fname,''),' ', IFNULL(s.student_mname,''),' ', IFNULL(s.student_lname,'')) order by Student_Name ASC

Я считаю отсутствие для каждого ученика. 1 отсутствует = 1 отсутствует и 3 lates = 1 отсутствует.

Вот результат моего запроса:

Изображение 174551

Это таблицы, в которых я получаю данные FROM:

ATTENDANCE_TBL: его строки:

attendance_id | entity_id | course_id | rooms_id | status_id | date | time | term | entity_type

эта таблица в основном является посещаемостью студентов. status id - только целочисленный тип от 1-5 1 означает присутствующий, 2 - поздний, 3 -absent, 4- извините, 5-cut.

У меня также есть STATUS_TBL: его строки: status_id | status_description status id - от 1 до 5, тогда описание равно 1 означает присутствующий, 2 - поздний, 3 -absent, 4- извините, 5-cut.

Строки STUDENT_TBL:

student_id | studant_fname | studant_mname | studant_lname | student_program 

student_program - это курс студента, например туризм, предпринимательство и т.д.

В целом, это проблема, с которой мне нужна помощь: я хочу игнорировать количество пропусков в дни праздников.

У меня есть holiday_table:

она имеет

announcement_id | announcement_date | announcement_description | term

если date_date совпадает с датой в attendance_tbl, а также в праздничном_таблице to attendance_tbl, в этот день будет игнорироваться подсчет посещаемости/отсутствующих/поздних. в основном это не будет считать

  • 0
    Я не уверен, что я понимаю ("понимаю") понятие "дата объявления"? Кажется, логика должна звучать так: «если ученик отсутствует в день отпуска, не считайте отсутствие». Тем не менее, есть еще лучший вопрос: если дата является выходным днем, с какой стати вообще будет организовано мероприятие / запись с этой датой?
  • 0
    ваш ответ кажется правильным, он не должен позволять вход в отпуск, однако мы не сделали эту логику в первую очередь: <
Теги:

1 ответ

0
Лучший ответ

Когда вы делаете левое соединение таблицы посещаемости с праздничной_таблицей по объявлению и сроку, проверьте, является ли дата отпуска нулевым, тогда ваш исходный запрос не будет считать те даты, которые считаются праздниками. Вы не указали нам столбцы для attendance_tbl, чтобы вы могли выяснить этот запрос ниже.

select <...>
FROM attendance_tbl a 
LEFT JOIN holiday_table h ON h.announcement_date = a.<date_column> and h.term = a.term
where h.announcement_date is null
and ...
Group By...
order by Student_Name ASC;
  • 0
    ты дал мне идею, спасибо
  • 0
    Если вам нравится мой ответ, пожалуйста, примите его. Благодарю.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню