1

DB テーブル構造:

セッション テーブル (別名試験テーブル)

SessionId(auto)  SessionName
137              XULWQ

質問表:

SessionId  QuestionId QuestionContent  QuestionNo QuestionMarks  OptionId
137        1          Name 2 Things     1         5               5
137        2          Name 3 Things     2         5               2

Option_Table テーブル:

OptionId  OptionType
1         A-C
2         A-D
3         A-E
4         A-F
5         A-G
6         A-H

回答表:

 AnswerId(auto) SessionId  QuestionId  Answer
   200            137        1           B
   201            137        1           F
   202            137        2           D
   203            137        2           A
   204            137        2           C   

以下のクエリのコンパイルに問題があります。クエリの下にある次のフィールドを選択したいのですが、結合に問題があります。最後の結合を見ると、テーブルから取得しようとしてOptionIDいますが、そのフィールドを持たないテーブルをOption_Table通過する必要があります。Answer私の問題は、質問テーブルとの結合に実際に依存する3つのフィールドがあることです。

私の質問は、選択したいフィールドを含む各質問の回答が表示されるように、以下のテーブルを結合する正しい方法は何ですか?

SELECT q.SessionId, s.SessionName, q.QuestionId, q.QuestionNo, q.QuestionContent, an.Answer, an.AnswerId, q.QuestionMarks, q.OptionId, o.OptionType
       FROM Session s 
       INNER JOIN Question q ON s.SessionId = q.SessionId
       JOIN Answer an ON q.QuestionId = an.QuestionId
       JOIN Option_Table o ON an.OptionId = o.OptionId
       WHERE s.SessionName = ?
       ORDER BY q.QuestionId, an.Answer

必要な出力:

ここに画像の説明を入力

4

3 に答える 3

4

JOINテーブルの列を使用するようにその条件を変更するだけQuestionです:

SELECT  q.SessionId, s.SessionName, q.QuestionId, q.QuestionNo, 
        q.QuestionContent, an.Answer, an.AnswerId, q.QuestionMarks, 
        q.OptionId, o.OptionType
FROM `Session` s 
INNER JOIN `Question` q 
    ON s.SessionId = q.SessionId
INNER JOIN `Answer` an 
    ON q.QuestionId = an.QuestionId
INNER JOIN `Option` o 
    ON q.OptionId = o.OptionId
WHERE s.SessionName = ?
ORDER BY q.QuestionId, an.Answer
于 2013-01-09T18:42:04.977 に答える
2
SELECT * 
FROM Question q 
    INNER JOIN Answer a ON q.QuestionID = a.QuestionID
    INNER JOIN Option_Table ot ON ot.optionID = q.optionID
    INNER JOIN session s ON s.sessionid = q.sessionid
于 2013-01-09T18:44:00.903 に答える
1
SELECT
    s.SessionId ,
    s.SessionName,
    q.QuestionId,
    q.QuestionNo,
    q.QuestionContent,
    a.Answer,
    a.AnswerId,
    q.QuestionMarks,
    ot.OptionId,
    ot.OptionType  
FROM    Session as s
LEFT JOIN Question as q ON s.SessionId = q.SessionId
LEFT JOIN Option_Table as ot ON ot.OptionId = q.OptionId 
LEFT JOIN Answer as a ON a.QuestionId = q.QuestionId    
于 2013-01-09T18:43:23.233 に答える