1

我需要一些帮助:我有这个数据库,其中包含这些字段及其尊重值:

agency_id | hostess_id
3         | 12-4-6
5         | 19-4-7
1         | 1

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

好吧,我以女主人身份登录,并且我有 id=4 我需要检索所有包含 id=4 的机构 ID,我不能用类似的操作员来做到这一点。我试图通过保存 hostess_id 行来做到这一点到一个数组,然后将其内爆,但我无法像这样解决它。

拜托,有什么想法吗?

4

2 回答 2

1

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

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

select agency_id from tablename where
  hostess_id LIKE '4-%' OR
  hostess_id LIKE '%-4-%' OR
  hostess_id LIKE '%-4'

如果您正在搜索所有女主人 id 为 4 的代理商。我在 sqlfiddle 上构建它以更彻底地说明http://sqlfiddle.com/#!2/09a52/1

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

于 2012-09-29T14:48:12.190 回答
1

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

代理机构:

agency_id | name
3         | Miami
5         | Annapolis
1         | New York

主持人

Hostes_id | name
4         | Helen
12        | May
19        | June

代理主机

Hostes_id | agency_id
4         | 1
4         | 3
4         | 5
12        | 1
12        | 3
19        | 1
于 2012-09-29T11:30:36.627 回答