Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 如何将多选结果保存在数据库中,以及如何检索它们_Database Design - Fatal编程技术网

Database design 如何将多选结果保存在数据库中,以及如何检索它们

Database design 如何将多选结果保存在数据库中,以及如何检索它们,database-design,Database Design,我有一个在线研究项目,还有很多选择题。 例如↓ 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 peop

我有一个在线研究项目,还有很多选择题。 例如↓

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  .......
但是我觉得它太长了,而且性能不是很好

那么,有谁能给我一些解决问题的方法吗


感谢您的建议…

创建3个表,1个用于人员,2个用于语言,3个用于实现前两个表之间的多对多关系:
1.用户:
id、姓名、电子邮件等。

2.语言:
id、名称、描述等。

3.用户语言:
用户id,语言id

当用户喜欢该语言时,在
Users\u 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;