2014-10-03 125 views
0

如何加入具有多个值的两个表中的一个由逗号一列,并与其他的列具有单值分离.......像SQL SERVER(ON内部连接)

1st table        2nd table 

name  course      course name course id 
Tanisha  1,2,3      Cisco    1 
Ellen  3,4,5      c++    2 
honesty  4,2,1      server   3   
             java    4 
             dot net   5 
+2

你应该重新设计它。 – 2014-10-03 20:47:15

+1

使用某些函数对课程字段中的数据进行规范化,然后以正常方式加入。为了不正常地对表格进行标准化,将db设计器打了一下。 – jpw 2014-10-03 20:47:38

+0

如果你想解决你的问题,看看这个问题:http://stackoverflow.com/questions/2647/how-do-i-split-a-string-so-i-can-access-item-x – jpw 2014-10-03 20:53:13

回答

3

您可以加入使用的表like

select * 
from table1 t1 join 
    table2 t2 
    on ',' + t1.course + ',' like '%,'' + cast(t2.courseid as varchar(255)) + ',%'; 

实际上,这是一个可怕的数据结构。它将数字ID存储在字符串字段中。它将列表存储在以逗号分隔的字段中。引擎无法利用索引进行基本查询,例如上面的查询。关系数据库具有很好的列表数据结构;它被称为表格。在这种情况下,该表将成为联结表。

有时,您必须与其他人创建的数据格式一起生活。如果你不能重构数据,有时候SQL有足够的强大功能来让你完成你需要做的事情。