2011-07-08 2 views
0

私はオンライン調査プロジェクトを持っており、多肢選択式の質問もたくさんあります。例えば ...↓DBに複数選択結果を保存する方法と、それらを取得する方法

Q:Which Programming language u like? 

1,C 

2,C++ 

3,CSharp 

4,VB.NET 

5,JAVA 

..... 

100 , Other 

私は1として選択した項目を保存し、0

として選択されていないだろう、私ならばそうDBでの結果は、↓

People  Selected 

people1  001000000000000....0 

people2  111000000100000....0 

people3  001000000000000....1 

people4  001000000000000....0 

..... 

そして今のようなものですどのくらい多くの人が唯一のCSHARPを選択したいのかを知りたい

次のようにSQLクエリを作成します。

select count(1) as cnt from table where 1=1 

and substring('Selected', 1, 1) == '0' 

and substring('Selected', 2, 1) == '0' 

and substring('Selected', 3, 1) == '1' 

and ....... 

しかし、私はそれが長すぎると思い、パフォーマンスはあまりよくありません。

だから、問題を解決する方法について誰でも私にいくつかの解決策を教えてください。
1.ユーザー:

答えて

1

、最初の2つの間の多対多の関係実装し、人々のための1、言語のための2、3の3のテーブルを作成し、あなたのアドバイスを

感謝... id, name, email,....を。
2.言語:id, name, description, ....;
3.ユーザーの言語:user_id, language_id;

ユーザーが言語を気に入っている場合は、Users_Languagesにレコードを挿入してから嫌いとなり、レコードを削除します。 取得は簡単です:

SELECT u.*, l.name 
FROM Users u 
INNER JOIN Users_Languages ul ON (ul.user_id = u.id) 
INNER JOIN Languages l ON (l.id = ul.language_id) 
WHERE u.id = 1; 
関連する問題