首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用迭代获取存储的id

使用迭代获取存储的id
EN

Stack Overflow用户
提问于 2012-09-29 19:06:43
回答 2查看 47关注 0票数 1

我需要一些帮助:我有这个数据库,其中有这个字段与他们的尊重值:

代码语言:javascript
复制
agency_id | hostess_id
3         | 12-4-6
5         | 19-4-7
1         | 1

在hostess_id中存储了与该agency_id关联但用"-“分隔的所有hostess_id

嗯,我以女主人的身份登录,并且我有检索包含id=4的所有agency_id所需的id=4,我不能使用like操作符执行此操作。我试着将hostess_id行保存到一个数组中,然后内爆它,但我不能这样解决它。

求求你,求求你,你知道吗?

EN

回答 2

Stack Overflow用户

发布于 2012-09-29 19:30:37

你应该改变你的数据库设计。您所描述的是典型的N:N关系

代理:

代码语言:javascript
复制
agency_id | name
3         | Miami
5         | Annapolis
1         | New York

寄宿

代码语言:javascript
复制
Hostes_id | name
4         | Helen
12        | May
19        | June

AgencyHostes

代码语言:javascript
复制
Hostes_id | agency_id
4         | 1
4         | 3
4         | 5
12        | 1
12        | 3
19        | 1
票数 1
EN

Stack Overflow用户

发布于 2012-09-29 22:48:12

首先,我要说的是,我完全同意@JvdBerg的观点,即这是一个需要规范化的糟糕的数据库设计。

但是,让我们想一想,您无法更改数据库布局,必须使用SQL来解决这个问题,一个低效但有效的解决方案是

代码语言:javascript
复制
select agency_id from tablename where
  hostess_id LIKE '4-%' OR
  hostess_id LIKE '%-4-%' OR
  hostess_id LIKE '%-4'

如果您要搜索hostess id为4的所有代理,我在sqlfiddle上构建此代码以更全面地说明http://sqlfiddle.com/#!2/09a52/1

不过请注意,这条SQL语句很难优化,因为很少使用用于子字符串匹配的索引结构。但是,对于非常短的id列表,它可以正常工作。如果你有任何改变表结构的机会,就像@JvdBerg建议的那样规范化你的模式,并在google上查看数据库设计和范式。

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

https://stackoverflow.com/questions/12652175

复制
相关文章

相似问题

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