私は次の表を持っています。これには、いくつかの学術クイズへの回答の記録が含まれています。
レスポスタ
-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);
しかし、これは割り当てのためであり、期待される結果を達成する方法を理解できないように見える二重否定戦略を使用して解決するよう求められています。