我已經建立了與此表一小自定義調查,其中用戶的答案被保存:查詢的小調查做基準測試
useranswers - ID - user_ID的 - question_id - answer_option - answer_value
因爲一些問題是多項選擇而其他問題不是我選擇了兩個字段而不是一個存儲所選選項(answer_option和answer_value)。僅使用複選框和單選按鈕,因此answer_value始終爲1或0,answer_option具有複選框/單選項的ID。
現在我想要做的是基準測試,例如question_id 1.例如,我想查看有多少用戶選擇了'option_a'或'option_b'的百分比。但是,我現在很困惑該怎麼做?是否有可能在一個查詢中做到這一點,如果是這樣的話?
因爲有些用戶可以在調查中離開,所以我不能指望用戶將其作爲總價值。所以我做了以下得到整體價值:
SELECT COUNT(*) FROM `useranswers` WHERE `question_id` = '1' AND answer_option = 'option_a'
這給了我參加了question_id 1的總用戶現在的問題是我如何計算已選定「option_a」或用戶的數量'option_b'。
當我使用此查詢:
SELECT FROM useranswers WHERE (answer_option = 'option_a' AND answer_value = 1) OR (answer_option = 'option_b' AND answer_value = 1)
然而,這個查詢給我回4,而現在只有三個用戶。我認爲這將通過添加一個GROUP BY user_id來解決,但是這並沒有解決。那三行的輸出是正確的,但我希望返回一個值。
順便說一句utdvalue始終是唯一的,這樣這就是爲什麼我沒有在第二個查詢
現在使用question_id的事情是,如果我得到的第二個查詢固定的,我能計算出PHP的百分比,但這需要我兩個查詢來做到這一點。所以我想知道如果有人有一些建議,如何做得更好,並可能在一個查詢中做到這一點。
放下一切,去了解第三範式 - http://en.wikipedia.org/wiki/Third_normal_form。你的數據庫設計不正確,這就是爲什麼你無法查詢它。 – Kenaniah 2012-01-17 20:28:57
感謝您的提示,我閱讀了wiki,但我沒有看到我的數據庫出了什麼問題。有四個表格:問題,問題選項,用戶和useranswers。在useranswers表中,我們不使用questionoption id,而是使用answer_option值,因爲這對我們自己和我們的合作伙伴來說更加清晰。不幸的是,我不能改變很多數據庫,因爲我沒有這樣設計:) – Shiraz 2012-01-17 21:04:07
我很高興幫助你在你的數據結構的範圍內編寫查詢。但是,在查詢中,您引用了useranswers表中的兩列:「utdvalue」和「utdchecked」,您之前沒有提及或解釋這些列。您能否詳細說明這些列代表什麼? – 2012-01-19 01:19:23