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;