Я пытаюсь понять, как создать сетку, которая немного напоминает ненормализованную таблицу. Я использую 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)?
Я мог бы уменьшить размеры, но делая одну строку или столбец за раз.
Мне просто интересно, есть ли лучшее решение? Я могу запустить ночную работу, чтобы создать сетку, чтобы она не была быстрой или оперативной.
Любые предложения / идеи?
Спасибо
Джейсон
Задача ещё не решена.
Других решений пока нет …