2012-10-11 86 views
0

我有一個「答案」數據庫表如下:GROUP BY子句不顯示行正確

回答表現在

AnswerId SessionId QuestionId Answer 
10  AAD  7   A 
11  AAD  7   B 
12  AAD  7   D 
13  AAA  1   A 
14  AAC  1   True 

,你可以看到上面有三個答案在考試問題7( AAD,在考試(Session)AAA中有1個問題1的答案,並且這些是在考試(Session)AAC中的問題1的1個答案。

所以當我輸出在PHP/HTML表,它應該是這樣顯示的:

Question Answer 

    7   ABD 
    1   A 
    1   True 

但問題是,它顯示的是在3個不同行的表,我不想:

Question Answer 
7   ABD 
7   ABD 
7   ABD 
1   ATrue 
1   ATrue 

所以我猜我得到了我的GROUP BY CLAUSE不正確,我的問題是GROUP BY子句應該是什麼,以便它是正確的?

SELECT DISTINCT an.SessionId, an.QuestionId, q.QuestionContent, o.OptionType, q.NoofAnswers, GROUP_CONCAT(an.Answer 
ORDER BY an.Answer 
SEPARATOR ' ') AS Answer, r.ReplyType, q.QuestionMarks 
FROM Answer an 
INNER JOIN Question q ON q.QuestionId = an.QuestionId 
JOIN Reply r ON q.ReplyId = r.ReplyId 
JOIN Option_Table o ON q.OptionId = o.OptionId 
GROUP BY an.SessionId, an.QuestionId 

下面我已經包括SHOW創建表的 「問題」 和 「答案」 表:

問表:

CREATE TABLE `Question` (
    `SessionId` varchar(10) NOT NULL, 
    `QuestionId` int(10) NOT NULL, 
    `QuestionContent` varchar(5000) NOT NULL, 
    `NoofAnswers` int(2) NOT NULL, 
    `ReplyId` int(1) NOT NULL, 
    `QuestionMarks` int(4) NOT NULL, 
    `OptionId` int(2) NOT NULL, 
    PRIMARY KEY (`SessionId`,`QuestionId`) 
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 

回答表:

CREATE TABLE `Answer` (
`AnswerId` int(10) NOT NULL AUTO_INCREMENT, 
`SessionId` varchar(10) NOT NULL, 
`QuestionId` int(10) NOT NULL, 
`Answer` varchar(5) NOT NULL, 
PRIMARY KEY (`AnswerId`) 
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 

以下是「問題」錶行(我只包括SessionId和QuestionId列,因爲它們與此坐位相關:

SessionId QuestionId 
AAA  1 
AAC  1 
AAD  7 

「答案」表中的行位於此問題的頂部。

UPDATE:通過上面的查詢,我得到這些結果(僅包括相關列):

SessionId QuestionId Answer 
AAA  1   A A  // This row answer should only be "A" 
AAC  1   True True //This row answer should only be "True" 
AAD  7   A B D  //This row is fine 

回答

1

您需要添加GROUP BY條款。試試這個,(這是一個簡化版本

SELECT QuestionID, GROUP_CONCAT(Answer SEPARATOR '') 
FROM tableName 
GROUP BY SessionID, QuestionID 

SQLFiddle Demo

+0

我忘了貼我的GROUP BY中的問題條款。我會測試你的group by子句,如果你想 – user1701484

+0

@ user1701484刪除查詢中的'an.AnswerId',你可以看看我的。 –

+0

我已更新GROUP BY子句,但仍無法使其工作。難道我做錯了什麼? – user1701484