0

内部結合を使用して、テーブルからカウントされた統計を返す非常に複雑なselectステートメントがあります(これをアンサーバンクと考えてください-以下の複雑なselectステートメント)。

これらの回答は、Questions_Bank_AnswerChoices(すべての質問を格納する)というテーブルに関連しています。

最初に質問を(Questions_Bank_AnswerChoicesテーブルから)プルしてから、統計と照合しようとしています(以下の複雑なステートメント)。以下の複雑なステートメントは統計を取得しますが、回答がない限り質問は取得しません。

したがって、質問1に誰も回答しなかった場合、質問1は回答テーブルに含まれていないため統計に表示されません(bc誰も回答していません)。

どうすればこれを達成できますか?アウタージョインが必要だと思いますか?

複雑な選択ステートメント:

WITH tbl as (
   SELECT 
      Questions_Bank.QuestionID, Questions_Bank.QuestionName,   
      REPLACE(Schools_Answers_Items.AnswerValue, '? ', ', ') as AnswerValue, 
      COUNT(Schools_Answers_Items.SchoolsAnswersItemID) AS CountAnswer,
      Schools_Answers_Items.SchoolID 
   FROM Questions_Bank 
   INNER JOIN Schools_Answers_Items
     ON Questions_Bank.QuestionID = Schools_Answers_Items.QuestionID 
   LEFT OUTER JOIN Schools_Answers  
     ON Schools_Answers_Items.SchoolsAnswerID = Schools_Answers.SchoolsAnswerID 
   WHERE (Questions_Bank.QuestionID = 1108) 
     AND (Schools_Answers.SchoolID = 103) 
   GROUP BY 
      Schools_Answers_Items.SchoolID,         
      Schools_Answers_Items.AnswerValue,
      Questions_Bank.QuestionID, 
      Questions_Bank.QuestionName
) 
SELECT 
   QuestionID, QuestionName, AnswerValue, CountAnswer, 
   SUM(CountAnswer) OVER () AS CountAllAnswers  
FROM tbl
4

1 に答える 1

1

これを変更してみてください

INNER JOIN Schools_Answers_Items
  ON Questions_Bank.QuestionID = Schools_Answers_Items.QuestionID 

LEFT OUTER JOIN Schools_Answers_Items
  ON Questions_Bank.QuestionID = Schools_Answers_Items.QuestionID 

そして、あなたはこれを削除したいかもしれません

AND (Schools_Answers.SchoolID = 103) 

またはこれに置き換えます

AND (Schools_Answers.SchoolID = 103 OR Schools_Answers.SchoolID IS NULL) 

これを試して:

   SELECT 
      Questions_Bank.QuestionID, Questions_Bank.QuestionName,   
      REPLACE(Schools_Answers_Items.AnswerValue, '? ', ', ') as AnswerValue,
      Schools_Answers_Items.SchoolID 
   FROM Questions_Bank 
   LEFT OUTER JOIN Schools_Answers_Items
     ON Questions_Bank.QuestionID = Schools_Answers_Items.QuestionID 
   LEFT OUTER JOIN Schools_Answers  
     ON Schools_Answers_Items.SchoolsAnswerID = Schools_Answers.SchoolsAnswerID 
   WHERE Schools_Answers_Items.SchoolID 
于 2012-08-15T23:48:15.143 に答える