2012-09-24 60 views
0

我已经使用implode函数在单列中的select语句中插入了多个值。现在我想单独检索这些值以进一步查询。 我有一个学生表,我在其中使用implode函数implode(',',$ _POST ['aoi']);将它们的不同感兴趣区域存储在单个列中。该表的结构是这样的:使用PHP/MySQL从包含多个值的列中提取单个值

id | Name |   AOI 
------------------------------------------- 
101 | Paul | Hardware,Networking 
102 | Fred | Finance,Insurance,Banking 

现在我想根据他们的兴趣单独检索这个学生数据。我试图使用爆炸函数提取数据。但是它以数组格式返回数据。

而且我必须分别提取感兴趣的区域。任何人都可以告诉我如何从包含多个值的列中提取单个值。这样我可以执行我的进一步查询。

Like $ query =“select student.id,student.Name from student where AOI ='Insurance'”;

谢谢。

+1

窍门1,规范数据库。提示编号2规范化您的数据库。 http://en.wikipedia.org/wiki/Database_normalization – Petah

+0

如果您使用其他数据库(如MongoDB),则可以将'​​AOI'添加为数组并存储值。但使用MYSQL,你需要规范化数据库。 –

+0

我是一个新手数据库用户。我一定会尝试实现规范化的概念。谢谢! –

回答

5

您的数据库结构根本上是错误的,它很可能会导致进一步的可扩展性问题。您应该查看database normalization的概念。在这个特殊的情况下,你应该使用多对多的关系:

学生:

id | name 
--------------- 
101 | Paul  
102 | Fred  

StudentInterests

id | student_id | interest_id 
--------------------------------- 
1 | 101   | 1 
2 | 101   | 2 
3 | 102   | 1 

兴趣

id | interest 
---------------- 
1 | Insurance 
2 | Networkings 
+1

这就是答案,这是什么与其他答案,鹅。 – Petah

相关问题