2 つのテーブルがあり、1 つには質問が含まれています (「テンプレート」と見なされます)。
|QuestionID|QuestionText |
|----------|------------------|
|1 |What is your name?|
|2 |What is your age? |
|-----------------------------|
そして、これらの質問への回答を含むもので、別の顧客 ID 値をキーとしています。
|CustID |QuestionID|Answer |
|----------|------------------|
|1000 |1 |John |
|1000 |2 |22 |
|2000 |1 |Alice |
|-----------------------------|
ご覧のとおり、顧客 #1000 は質問 1 と 2 に回答し、顧客 #2000 は質問 1 のみに回答しました。
これらを顧客が Web ページのグリッドにロードする必要があり、テンプレートと回答テーブルの間で左外部結合を実行して、次のようなものを取得するだけでよいと考えました。
|CustID |QuestionID|Answer |
|----------|------------------|
|2000 |1 |Alice |
|2000 |2 |<null> |
|-----------------------------|
したがって、この場合、カスタマー #2000 はAnswer
質問 #2 の列を null として返し、アプリケーションは回答が必要であることを認識します。これは私が試した SQL の例ですが、に使用するなどOUTER
の組み合わせがいくつあっても、単一のクエリでこれを機能させることはできません。LEFT
JOIN
select
q.QuestionID,
q.QuestionText,
a.CustID,
a.Answer,
from
SurveyAnswers a
full outer join SurveyQuestions q
on a.QuestionID = q.QuestionID
where
a.CustID = @CustomerID
基本的に、テーブル内のすべてのレコードと、CustomerID に一致するすべてのレコードの列の値が必要です。SurveyQuestions
Answer
SurveyAnswers
代わりに、 で の 1 つのレコードを取得するだけで、SurveyAnswers
その結果、 で一致 (だと思いますか?) となりSurveyQuestions
ます。私の SQL-fu は強力ではありません。
私も試しUNION
てみましたが、2つのテーブルの構造が異なるため、うまく機能しませんでした。
もちろん、質問と回答を別々に取得して、C# コードで「合体」を実行することもできますが、ストアド プロシージャから直接実行できるかどうかを確認したかったのです。ありがとう!