Разбираемся с расписанием преподавателя.
По аналогии с подсказкой, запросите расписание по вашей любимой аудитории и сделайте микро отчет вида пример_отчета.docx
Давайте теперь перейдем к самому интересному. К данным расписания. Хранится оно в табличке schedule_items. Мы ее в прошлый раз смотреть не стали потому что она сильно сложная. Поэтому рассмотрим сейчас. В ней есть следующие поля:
Как видим данные весьма навороченные, визуально выглядит так:
Давайте попробуем делать разные запросы, чтобы разобраться как с этим всем работать.
Как и в случае со списком групп, где чтобы получить группы из конкретного института мы ориентировались на поле faculty_id
, тут примерно тоже самое. То есть если мы хотим получить список записей, привязанных к конкретному преподавателю, надо ориентироваться на поле teacher_id
.
Осталось только узнать этот самый teacher_id
. Это поле содержит идентификатор преподавателя. Сам список преподавателя находится в таблице teachers
.
Найдите в этой таблице вашего любимого/нелюбимого преподавателя и узнайте его id. Воспользуйтесь поиском по имени:
SELECT *
FROM teachers
WHERE full_name like '%Каташ%'
выдаст что-то такое, нас интересует вот эта циферка
Теперь используя этот номер запросим расписание по преподавателю:
SELECT *
FROM schedule_items
WHERE teacher_id = 4520
получим много записей
если присмотреться, то можно заметить некий элемент повторения, то есть записи время от времени с небольшими изменениями повторяются
отличие по сути только в полях id
и dbeg
И вот это самое dbeg
как раз одно из самых важных полей. Оно указывает дату начала недели, на которую действует расписание.
Наверное, вы замечали, что на сайте расписание всегда показывается на текущую неделю. Есть возможность просматривать на следующую неделю. Так вот и в базе оно тоже хранится своего рода слоями. То есть копия расписания на конкретную неделю.
Отделить какие записи к какой неделе относятся помогает поле dbeg.
В поле dbeg
указывается дата начала недели, на которую действительны записи. То есть записи которые относятся к одной и той же недели имеют одно и тоже значение в dbeg.
Чтобы оставить только записи, относящиеся к конкретной неделе, надо отфильтровать по этому полю. Сформируем дату начала текущей недели в виде строки ГОД-МЕСЯЦ-ЧИСЛО
типа 2022-11-14
и отфильтруем:
SELECT *
FROM schedule_items
WHERE teacher_id = 4520 and dbeg = '2022-11-14'
отлично, теперь у нас данные на конкретную неделю =)
Давайте сравним это с расписанием на сайте. Найдем преподавателя по фамилии:
кстати при таком поиске, внутри на сайте как раз срабатывает, тот самый запрос поиска преподавателя по имени, что мы писали выше:
SELECT *
FROM teachers
WHERE full_name like '%Каташ%'
открываем по ссылке. Кстати обратите внимание на ссылку:
то есть в принципе вы можете открыть вашего преподавателя по идентификатору, сформировав ссылку вида и просто поменяв в ней номер:
https://www.istu.edu/schedule/?prep=4520
единственное, он выдаст вам расписание на текущую неделю. А если хочется посмотреть старое расписание, можно либо воспользоваться календарем справа:
либо сформировать ссылку в виде:
https://www.istu.edu/schedule/?prep=4520&date=2022-11-14
Можно попробовать посопоставлять расписание на сайте с расписание в табличке, допустим тут я за первые несколько дней сопоставил:
Пока возможно не совсем ясно каким образом мы сопоставили данные на сайте с данными в табличке. Но в принципе если посмотреть на название групп, то логика должна прослеживаться. Мы в следующих задания разберем это подробнее.
Попробуйте теперь сделать задание
Разбираемся с расписанием преподавателя.
По аналогии с подсказкой, запросите расписание по вашей любимой аудитории и сделайте микро отчет вида пример_отчета.docx