🐛 fix cohort-bug
when all questions are answered at least 3 times, it didn't fill the last cohort with random questions Co-authored-by: haraldnilsen <harald_998@hotmail.com> Signed-off-by: Sindre Kjelsrud <kjelsrudsindre@gmail.com>
This commit is contained in:
parent
b249705cd8
commit
03a3d3f2d6
1 changed files with 24 additions and 23 deletions
|
@ -45,29 +45,30 @@ func GetUserQuestions(respondentID int) ([]UserQuestions, error) {
|
|||
}
|
||||
|
||||
getQuestionsStatement := `
|
||||
WITH FilteredQuestions AS (
|
||||
SELECT s.SpørsmålID, s.tekst
|
||||
FROM Spørsmål s
|
||||
LEFT JOIN (
|
||||
SELECT ss.spørsmålID
|
||||
FROM Spørsmålsvar ss
|
||||
LEFT JOIN SvarVurdering sv ON ss.svarID = sv.svarID
|
||||
GROUP BY ss.spørsmålID
|
||||
HAVING COUNT(sv.vurderingID) < 3
|
||||
) AS subquery ON s.spørsmålID = subquery.spørsmålID
|
||||
WHERE subquery.spørsmålID IS NOT NULL
|
||||
LIMIT 5
|
||||
)
|
||||
|
||||
SELECT * FROM FilteredQuestions
|
||||
UNION ALL
|
||||
SELECT * FROM (
|
||||
SELECT s.SpørsmålID, s.tekst
|
||||
FROM Spørsmål s
|
||||
ORDER BY RANDOM()
|
||||
LIMIT 5
|
||||
) RandomQuestions
|
||||
WHERE NOT EXISTS (SELECT 1 FROM FilteredQuestions)
|
||||
WITH FilteredQuestions AS (
|
||||
SELECT s.SpørsmålID, s.tekst
|
||||
FROM Spørsmål s
|
||||
LEFT JOIN (
|
||||
SELECT ss.spørsmålID
|
||||
FROM Spørsmålsvar ss
|
||||
LEFT JOIN SvarVurdering sv ON ss.svarID = sv.svarID
|
||||
GROUP BY ss.spørsmålID
|
||||
HAVING COUNT(sv.vurderingID) < 3
|
||||
) AS subquery ON s.spørsmålID = subquery.spørsmålID
|
||||
WHERE subquery.spørsmålID IS NOT NULL
|
||||
LIMIT 5
|
||||
),
|
||||
RandomQuestions AS (
|
||||
SELECT s.SpørsmålID, s.tekst
|
||||
FROM Spørsmål s
|
||||
WHERE s.SpørsmålID NOT IN (SELECT SpørsmålID FROM FilteredQuestions)
|
||||
ORDER BY RANDOM()
|
||||
LIMIT 5
|
||||
)
|
||||
SELECT * FROM FilteredQuestions
|
||||
UNION ALL
|
||||
SELECT * FROM RandomQuestions
|
||||
LIMIT 5
|
||||
`
|
||||
|
||||
stmt, err := db.Prepare(getQuestionsStatement)
|
||||
|
|
Reference in a new issue