SQL is goed in het werken met reeksen gegevenswaarden in de database, maar niet zo goed in reeksen gegevenswaarden die niet zijn in de database.
De beste oplossing is om één kleine tabel aan te houden voor de waarden waarover u moet variëren:
CREATE TABLE ScoreValues (score int);
INSERT INTO ScoreValues (score)
VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), (10);
Gezien uw opmerking dat u het maximum aantal punten van een test in een andere tabel definieert, kunt u op de volgende manier deelnemen aan die tabel, zolang ScoreValues
zeker waarden heeft die minstens even hoog of hoger zijn dan de maximale punten van de hoogste test:
SELECT v.score, COUNT(tr.score) AS 'NumStudents'
FROM ScoreValues v
JOIN Tests t ON (v.score <= t.maxmarks)
LEFT OUTER JOIN TestResults tr ON (v.score = tr.score AND t.testid = tr.testid)
WHERE t.testid = 'mytestid'
GROUP BY v.score;