2012-01-19 64 views
0

我一直在做一個測驗,測驗的核心是完成...我現在需要的是這樣的:我如何做一個測驗前5錯誤的答案?

我得到了用戶註冊,並在我的測驗中,當用戶在問題,他應該能夠看到有多少人回答了這個問題。

到目前爲止,我已經能夠檢查所有正確答案的用戶通過使用「問題」表加入了「答案」表...並檢查它這樣做...

什麼我希望能夠知道問題的錯誤答案的前5名......我得到了一個名爲'答案'的表格,並且我知道其中的question_id ...因此,如何找到錯誤的答案和然後找出哪些答案最多?

SELECT * FROM answers 

WHERE question_id = 1 

AND answer IN (

SELECT answer 

FROM answers 

GROUP BY answer 

HAVING COUNT(*) >1 
) 

此查詢選擇表中最多的值。

我的問題是,我需要知道插入的每個不同值的數量(然後按最高數量排序)。說我的數據庫中的用戶回答'蛋糕和燻肉'123次然後將有123該答案在數據庫中的值...但我不希望所有行的值,我想要1行123值。

因爲我想做出錯誤答案的前5名,我希望它省略正確的答案。

對不起,這是非常混亂的解釋。希望你明白,謝謝你的閱讀!

最好的問候, 馬蒂亞斯

+0

假設所有的問題都是「只選一個」而不是「選擇所有適用的」類型的答案,那麼修改你的內部查詢以排除正確的答案。 –

+1

如果您可以向我們展示您的數據庫佈局(對於這兩個表),會很酷。也許對你沒有提及的專欄有一個完全不同的說法。 – Aufziehvogel

+0

您正在使用哪種SQL(Oracle,SQLServer,MySQL等)? –

回答

3

關於你的表結構的一些詳細信息,將是有益的。根據你提供什麼,我認爲你只需要做到這一點:

SELECT answer, count(*) FROM answers 

WHERE question_id = 1 

AND answer != "<correct answer>" 

Group By answer 

Order By count(*) Desc; 

這將數從多到少頻繁的每個答案和訂購。

+0

哇,這正是我正在尋找。奇蹟般有效! –