0

私は投票用のウェブサイトを作成しました。ユーザーは登録して投票することを目的としています。ユーザーの情報とコメント用に1つのテーブルのみを作成しました。以下は、テーブルの列と行です。

ユーザー:

列:ユーザー名パスワードagree_1 reason_1agree_2 reason_2

行:ポールテストはいNULLいいえ私はそれが好きではないので

質問は(テーブル)にあり、それぞれ100行を超えているため、このテーブルをこのように作成することにしました。繰り返しになりますが、フォームから、同意する場合は理由を記載しません(それがnullの理由です)が、同意しない場合は理由を記載する必要があります。私の質問は:

このような計画外のデータベースの標準レポートを作成するにはどうすればよいですか?「はい」と言って同意した人の数と「いいえ」と言った人の数を数えるにはどうすればよいですか?いいえと言った人のために、どうすれば彼らの理由を引き出すことができますか?

このレポートを抽出して、phpを使用して表示したいと思います。mysqlとphpを使用しています。

4

1 に答える 1

0

私があなたを誤解していない限り、正規化を念頭に置いてテーブルを再構築するのが最善だと思います:

users
- id
- email
- name

polls
- id
- name

questions
- id
- poll_id
- question
- order

answers
- id
- question_id
- user_id
- answer

その後、うまくいけば、要件と必要なクエリがより明確になります。たとえば、質問 #34 に対して一意の回答をした人の数をクエリするには、次のようにします。

SELECT
    answer,
    count(*) AS 'people'
FROM answers
WHERE question_id = 34
GROUP BY answer

次のようなものが返されます。

answer    people
yes       15
no        17
null      3
于 2013-01-20T22:30:47.547 に答える