Создайте «сетку» данных расписания из SQL (mySQL)

Я пытаюсь понять, как создать сетку, которая немного напоминает ненормализованную таблицу. Я использую MySQL и буду отображать данные с помощью PHP / HTML.

Это для инструмента мониторинга посещаемости, который мы пилотируем. Это немного сложнее, так как мы не всегда получаем запись, например посещаемость не записана по какой-либо причине (не да или нет, но ?? — «не уверен / не знаю»)

As an example, we have attendance data for students. The data holds
1. User id (a unique identifier)
2. Course ID (unique identifier)
3. Date/time - actually week number so a discrete value (1,2,3,4 etc)
4. Attended Y/N (actually more detail)
5. Other date (timestamp, created by)

В качестве примера таблица посещаемости содержит это

UserID CourseID Week Attended
jeff123 Chem101 32   Y
jeff123 Chem101 33   Y
jeff123 Chem101 34   Y
jeff123 Math101 35   Y
jeff123 Math101 32   Y
jeff123 Math101 33   Y
jeff123 Math101 34   N
jeff123 Chem101 35   Y
jane123 Chem101 32   Y
jane123 Chem101 33   N
jane123 Chem101 34   Y
jane123 Math101 35   Y
jane123 Math101 32   Y
jane123 Math101 33   Y
jane123 Math101 34   Y
jane123 Chem101 35   Y
...
...

И там нет записи, где ничего не было записано; извините, если это звучит очевидно, но это часть того, что я пытаюсь решить.

Используя PHP, я мог зацикливаться на нисходящих именах пользователей и зацикливаться на «вправо» в течение нескольких недель, чтобы получить сетку

Week      32  33 34 35 ....
User id   Y   Y  Y  N
jeff123   Y   N  N  Y
jane123  .....
...

….

Это неправильно как

1. I possibly need to do a sub query for each grid point as data may not exist
2. I keep thinking I need an outer join to fill in the missing data in the grid
3. If this was something like company and profit then a missing profit record could be added using an outer join showing Null or similar
4. As this is looking for a missing record for both userID and Week number then I'm wondering if I can do an outer join (but in more dimensions user and week)?

Я мог бы уменьшить размеры, но делая одну строку или столбец за раз.

Мне просто интересно, есть ли лучшее решение? Я могу запустить ночную работу, чтобы создать сетку, чтобы она не была быстрой или оперативной.

Любые предложения / идеи?

Спасибо
Джейсон

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]