私は次のデータベース設計を持っています:
Employee Table: EmployeeID, Name, OrgCode
Department Table: OrgCode, DepartName
CompleteSurvey Table: ID, RespondantID, QuestionsAnswersID
Questions Table: QuestionID, Question
Answers Table: AnswerID, Answer
QuestionsAnswers Table: ID, QuestionID, AnswerID
各質問には、異なる複数の選択肢があります。ほとんどの質問には、(同意する、同意しない)などの同じ選択肢があります。質問がゼロであっても、すべての選択肢と各選択肢の参加者数を示すクエリを作成したいと思います。質問を書いたところ、誰も回答を選択していなくても質問のすべての回答が表示されますが、質問の列に参加者がいない回答のほかにNULLが表示され、理由がわかりません。何か助けてください?
私の質問:
SELECT COUNT(DISTINCT dbo.CompleteSurvey.RespondantID) AS [Total Number of Participants], dbo.Answers.Answer, dbo.Questions.Question
FROM dbo.CompleteSurvey INNER JOIN
dbo.QuestionsAnswers ON dbo.CompleteSurvey.QuestionsAnswersID = dbo.QuestionsAnswers.ID INNER JOIN
dbo.Questions ON dbo.QuestionsAnswers.QuestionID = dbo.Questions.QuestionID RIGHT OUTER JOIN
dbo.Answers ON dbo.QuestionsAnswers.AnswerID = dbo.Answers.AnswerID
GROUP BY dbo.Answers.Answer, dbo.Questions.Question
アップデート:
クエリには、質問の各部門の参加者の数とそのすべての回答が表示される必要があります。それを行うにはどうすればよいですか。
私の更新されたクエリ:
SELECT COUNT(DISTINCT dbo.CompleteSurvey.RespondantID) AS [Total Number of Participants], dbo.Answers.Answer, dbo.Questions.Question,
dbo.Departments.DepartmentName
FROM dbo.Employees INNER JOIN
dbo.CompleteSurvey ON dbo.Employees.EmployeeID = dbo.CompleteSurvey.RespondantID INNER JOIN
dbo.Departments ON dbo.Employees.OrgCode = dbo.Departments.OrgCode RIGHT OUTER JOIN
dbo.Questions INNER JOIN
dbo.QuestionsAnswers ON dbo.Questions.QuestionID = dbo.QuestionsAnswers.QuestionID INNER JOIN
dbo.Answers ON dbo.QuestionsAnswers.AnswerID = dbo.Answers.AnswerID ON dbo.CompleteSurvey.QuestionsAnswersID = dbo.QuestionsAnswers.ID
GROUP BY dbo.Answers.Answer, dbo.Questions.Question, dbo.Departments.DepartmentName
しかし、それに関する問題は部門を示していません。いずれかの回答に参加者がいない場合でも、各質問の各部門の参加者数とすべての回答を表示する必要があります。