我有下表,其中记录了一些学术测验的答案:
回复
-SEMESTRE_ID(测验学期的外键)
-PERGUNTA_ID(测验问题的外键)
-DISCIPLINA_ID(被评估主题的外键)
-DOCENTE_ID(被评估教师的外键)
-QUIZ_ID(回答测验的每个人都有一个唯一的 quiz_id)
-TIPOAULA(类的类型,与此上下文无关)
-DATA(日期,与此上下文无关)
-ID(答案的唯一 ID)
-RESPOSTA(答案的值,从 1 到 5)
因此,一个给定学期的测验有多个不同科目的问题,可以由人们评估(不一定需要对所有问题进行投票)。
我想要实现的查询是:
id 21 学期测验的每个问题中至少有 5 分的科目的 id 和首字母缩写词是什么?
我已经使用计数策略解决了它:
SELECT DISCIPLINA.DISCIPLINA_ID, SIGLA
FROM RESPOSTAS, DISCIPLINA
WHERE RESPOSTAS.DISCIPLINA_ID = DISCIPLINA.DISCIPLINA_ID AND SEMESTRE_ID = 21 AND RESPOSTA = 5
GROUP BY DISCIPLINA.DISCIPLINA_ID, SIGLA
HAVING COUNT(DISTINCT PERGUNTA_ID) = (SELECT COUNT(DISTINCT PERGUNTA_ID) FROM RESPOSTAS WHERE SEMESTRE_ID = 21);
但这是一个作业,我们也被要求使用双重否定策略来解决它,我似乎无法理解如何达到预期的结果。