首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复选框可从以逗号分隔的字段存储的mysql表中优化搜索

复选框可从以逗号分隔的字段存储的mysql表中优化搜索
EN

Stack Overflow用户
提问于 2013-08-24 18:14:27
回答 1查看 351关注 0票数 0

我正在实现一个细化搜索mysql查询基于复选框值和存储在Mysql数据库表中的匹配值。复选框字段如下:

代码语言:javascript
复制
<input type="checkbox" value="1" name="services_search[]" id="services_search[]" /> Service ABC

<input type="checkbox" value="2" name="services_search[]" id="services_search[]" /> Service XYZ

<input type="checkbox" value="3" name="services_search[]" id="services_search[]" /> Service 123 

我有一个mysql表"users“,其中有id、name和services字段。字段"services“存储了一个或多个服务值,如下所示:

代码语言:javascript
复制
|  id  |  name   |  services 
|  1   |  Mark   | 1, 2, 3
|  2   |  Jhon   | 2, 3
|  3   |  Tina   | 1

现在我的问题是如何实现mysql查询,以获得基于多个检查服务的精化结果。

EN

回答 1

Stack Overflow用户

发布于 2013-08-24 18:54:52

由于一个用户可以拥有多个服务一个服务可以属于多个用户,因此更好的做法是使用多对多关系表。

你的例子应该是这样的结构:

用户表

代码语言:javascript
复制
id | name
---+-----
1  | Mark
2  | John
3  | Tina

服务表

代码语言:javascript
复制
id | service
---+--------
1  | Normal
2  | Premium
3  | Admin

给用户的表

代码语言:javascript
复制
user_id | service_id
--------+-----------
1       | 1
1       | 2
1       | 3
2       | 1
2       | 2
3       | 1

其中user_id和service_id具有指向主表中各自字段的外键。现在它很容易维护,不需要字符串操作,并且很容易查询。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18417421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档