-1

正しい GROUP BY 句を含めて、SELECT 句で正しいテーブルからフィールドを選択しているかどうかわからないクエリで助けが必要です。

以下はデータベーステーブルです:

セッションテーブル

SessionId  SessionName
1          AAA
2          AAB

質問表

SessionId  QuestionId  QuestionContent            QuestionMarks
1          1           What is 2+2?               2
1          2           What is 4+4?               3
2          1           What is 10+10 and 11+11?   5
2          2           What is 15+15?             5
2          3           What is 20+20 and 40+40?   7

回答表

AnswerId SessionId  QuestionId Answer
1        1          1          B
2        1          2          C
3        2          1          A
4        2          1          D
5        2          2          A
6        2          3          D
7        2          3          E

以下はクエリです。

   $query = "SELECT q.SessionId, s.SessionName, q.QuestionId, q.QuestionContent, GROUP_CONCAT(DISTINCT Answer SEPARATOR '') AS Answer, q.QuestionMarks 
   FROM Session s 
   INNER JOIN Question q ON s.SessionId = q.SessionId
   JOIN Answer an ON q.QuestionId = an.QuestionId
   WHERE SessionName = "AAB"
   GROUP BY an.SessionId, an.QuestionId
   ";

セッション「AAB」に属する各質問を表示したい。したがって、以下のように QuestionId、QuestionContent、Answer、および QuestionMarks が表示されます。

 QuestionId  QuestionContent              Answer  QuestionMarks
    1           What is 10+10 and 11+11?     AD       5
    2           What is 15+15                A        5
    3           What is 20 + 20 and 40+40?   DE       7

現在、セッション「AAB」で「Lets Say Questions」を検索している場合、以下に表示されています。

QuestionId  QuestionContent              Answer  QuestionMarks
    1           What is 10+10 and 11+11?     AD       5
    2           What is 15+15                A        5
    3           What is 20 + 20 and 40+40?   DE       7
    1           What is 10+10 and 11+11?     AD       5
    2           What is 15+15                A        5
    3           What is 20 + 20 and 40+40?   DE       7
    1           What is 10+10 and 11+11?     AD       5
    2           What is 15+15                A        5
    3           What is 20 + 20 and 40+40?   DE       7
    1           What is 10+10 and 11+11?     AD       5
    2           What is 15+15                A        5
    3           What is 20 + 20 and 40+40?   DE       7
    1           What is 10+10 and 11+11?     AD       5
    2           What is 15+15                A        5
    3           What is 20 + 20 and 40+40?   DE       7
4

1 に答える 1

1

回答テーブルにはセッション ID が含まれていますが、参加できなかったようです。また、同じ質問/セッションに対して同じ回答を複数回保存することが偶然でない限り、group_concatにDISTINCTは必要ありません。その場合、回避策をクエリにコーディングする代わりにその事故を解決します。

SELECT q.SessionId, s.SessionName, q.QuestionId, q.QuestionContent, GROUP_CONCAT(DISTINCT Answer SEPARATOR '') AS Answer, q.QuestionMarks 
FROM Session s 
INNER JOIN Question q ON s.SessionId = q.SessionId
JOIN Answer an ON q.QuestionId = an.QuestionId
             AND an.sessionID = s.sessionID
WHERE SessionName = "AAB"
GROUP BY an.SessionId, an.QuestionId
于 2012-11-02T01:02:47.260 に答える