1

私は3つのテーブルを持っています。SurveyFact、質問、および回答。アンケート ファクトにはクライアントが行ったアンケートのデータが含まれ、質問と回答のテーブルには明らかなデータ、質問のリスト、および質問ごとの可能な回答が含まれます。

調査事実:

| SurveyFactID | ClientID   |  QuestionID   | ResponseCode |
------------------------------------------------------------
|    1         |    1       |     1         |     3        |    
|    2         |    1       |     2         |     3        |
|    3         |    1       |     3         |     1        |

質問:

| QuestionID| QuestionText          |
-------------------------------------
|    1      |    blah blah blah     |    
|    2      |    blah blah blah     |
|    3      |    blah blah blah     |

応答:

| ResponseID| QuestionID  | ResponseCode |ResponseText     |
-----------------------------------------------------------|
|    1      |    1       |      1       |   like           |    
|    2      |    1       |      2       |   don't care     |
|    3      |    1       |      3       |   hate           |
|    4      |    2       |      1       |   like           |    
|    5      |    2       |      2       |   don't care     |
|    6      |    2       |      3       |   hate           |

これが私が思いついたクエリです。(それは失敗します)

select
    sf.QuestionCode as [Question Number],
    q.QuestionText as [Question Text],
    r.ResponseText as [Reponse]
from SurveyFact sf
inner join Question q
    on q.QuestionID = sf.QuestionID
inner join Responses r
    on r.ResponseCode = sf.ResponseCode
where sf.ClientID = '1'
    and sf.QuestionID = q.QuestionID
    and sf.ResponseCode = r.ResponseCode

select distinct を使用しても、SurveyFact にリストされている質問/回答の組み合わせだけではなく、考えられるすべての回答を含む調査と質問が得られます。

助けてください?

要求されたテーブル: 私が見ているもの

| Question Number | Question Text |Response Text     |
------------------------------------------------------
|    1       |  blah blah blah    |   like           |    
|    1       |  blah blah blah    |   don't care     |
|    1       |  blah blah blah    |  hate            |
|    2       |  blah blah blah    |   like           |    
|    2       |  blah blah blah    |   don't care     |
|    2       |  blah blah blah    |   hate           |

私が欲しいもの:

| Question Number | Question Text |Response Text     |
------------------------------------------------------ 
|    1       |  blah blah blah    |   don't care     |
|    2       |  blah blah blah    |   like           |    

最初は数、質問、そしてすべての可能な答えです。2 番目は単なる数字、質問、選択した答えです

4

2 に答える 2

1
select
    sf.QuestionID as QuestionNumber,
    q.QuestionText as QuestionText,
    r.ResponseText as Reponse
from SurveyFact sf, Question  q, Response  r
where sf.ClientID = '1'
and
sf.QuestionID = q.QuestionID
and
r.QuestionID = q.QuestionID
and
sf.ResponseCode = r.ResponseCode

私はあなたが探しているものだと思います。

結果は次のようになります。

| Question Number | Question Text |Response Text     |
------------------------------------------------------ 
|    1       |  blah blah (q1)    |   hate           |
|    2       |  blah blah (q2)    |   hate           | 

あなたの結果では、次のように書きました。

| Question Number | Question Text |Response Text     |
------------------------------------------------------ 
|    1       |  blah blah blah    |   don't care     |
|    2       |  blah blah blah    |   like           | 

しかし、「dont care」と「like」を取得する方法がわかりませんか? それらには ResponseCode 1 と 2 があります。ResultCode 1 と 2 は SurveyFact にはありません。1 はありますが、質問 3 に適用され、質問 3 は応答テーブルにありません。

于 2013-02-02T19:01:38.933 に答える
0

応答が適切な質問に対するものでなければならないという条件を追加します。

inner join Responses r
    on r.ResponseCode = sf.ResponseCode
       and r.QuestionID = q.QuestionID
于 2013-02-02T18:29:06.533 に答える