我需要一些帮助:我有这个数据库,其中有这个字段与他们的尊重值:
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行保存到一个数组中,然后内爆它,但我不能这样解决它。
求求你,求求你,你知道吗?
发布于 2012-09-29 19:30:37
你应该改变你的数据库设计。您所描述的是典型的N:N关系
代理:
agency_id | name
3 | Miami
5 | Annapolis
1 | New York寄宿
Hostes_id | name
4 | Helen
12 | May
19 | JuneAgencyHostes
Hostes_id | agency_id
4 | 1
4 | 3
4 | 5
12 | 1
12 | 3
19 | 1发布于 2012-09-29 22:48:12
首先,我要说的是,我完全同意@JvdBerg的观点,即这是一个需要规范化的糟糕的数据库设计。
但是,让我们想一想,您无法更改数据库布局,必须使用SQL来解决这个问题,一个低效但有效的解决方案是
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上查看数据库设计和范式。
https://stackoverflow.com/questions/12652175
复制相似问题