2014-10-03 173 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有足夠的強大功能來讓你完成你需要做的事情。