2017-10-21 139 views
0

选择并splited列值我有2个表SQL查询与来自另一个表

第一表

Id Type Value 
1 2 1,2,3,5 
2 1 1,3,6 
3 1 2,3,1,6 

第二表

Id Name 
1 Leon 
2 Anna 
3 Biorn 
4 Alex 
5 Peter 
6 Luis 

值在第一表是IDS在第二表中。

我需要查询的类型从第一台

例如返回所有名称:

Type = 1 
return: Leon,Anna,Biorn,Luis 
type = 2 
return: Leon,Anna,Biorn,Peter 

我试图创建一个视图,将是这样的:

Type Name 
1 Leon 
1 Anna 
1 Biorn 
1 Luis 
2 Leon 
2 Anna 
2 Biorn 
2 Peter 

因此,我可以轻松地按类型选择所有名称,但我无法弄清楚如何去做。请帮忙!

回答

1

您似乎认识到这是一个糟糕的数据结构。您应该有一个联结表 - 将整数列表存储为分隔字符串不是SQLish数据结构。

有时,我们被其他人的糟糕的设计决定所困扰。以下是你可以做的一件事:

select t1.type, t2.name 
from table1 t1 join 
    table2 t2 
    on ',' + t1.value + ',' like ',%' + cast(t2.id as varchar(255)) + '%,';