Unsicher, ob es zu diesem Zeitpunkt das Format Ihrer Daten ändern, aber die Art, wie ich würde empfehlen, Ihre Datenbank zu strukturieren (was würde erheblich vereinfachen Abfrage der Art der Informationen, die Sie zu fragen) würde wie folgt sein:
CREATE TABLE `student_attendance` (
`student` INT(11) NOT NULL,
`class` DATETIME NOT NULL,
`attended` BOOLEAN NOT NULL,
PRIMARY KEY (`student`,`class`)
)
Dann abfragen, wie viele Tage ein Schüler besucht, würden Sie tun:
SELECT COUNT(*)
FROM `student_attendance`
WHERE `student` = '1'
AND `attended` = TRUE;
natürlich ohne mehr darüber, was zu wissen, exa Sicherlich, du versuchst es zu erreichen, ich kann mir nicht sicher sein, dass das völlig angemessen ist. Obwohl das Format, in dem Sie Ihre Daten speichern, so aussieht, als würde es Ihr Leben unnötig erschweren (Sie kombinieren verschiedene Datenpunkte zu einer einzigen Spalte; das ist ein Nein), also könnte ich mir vorstellen, dass dies eine Verbesserung ist.
EDIT: Um genauer zu sein, speichern Sie das Datum und die Periode (anstelle von Datum und Uhrzeit); Beispiel:
CREATE TABLE `student_attendance` (
`student` INT(11) NOT NULL,
`class_date` DATE NOT NULL,
`class_period` TINYINT(4) NOT NULL,
`attended` BOOLEAN NOT NULL,
PRIMARY KEY (`student`,`class_date`,`class_period`)
)
Warum speichern Sie die Daten in diesem Format: 'Montag {9,12}, Donnerstag {14,17}' ??? – Matthematics
Fragen Sie nur, wie man die 14 und 17 aus der Zeichenfolge 'Montag {9,12}, Donnerstag {14,17}' dynamisch extrahiert? Wenn ja, verwenden Sie einen regulären Ausdruck. – Matthematics