2017-10-21 143 views
0

J'ai 2 tablesrequête Sql avec une valeur de colonne sélectionnée et DIVISEES d'une autre table

Première table

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

Deuxième table

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

Les valeurs du tableau d'abord sont Ids dans le tableau II.

J'ai besoin requête qui renvoie tous les noms par type de la première table

Par exemple:

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

Je suis en train de créer une vue qui ressemblera à ceci:

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

Je peux donc facilement sélectionner tous les noms par type, mais je n'arrive pas à comprendre comment le faire. S'il vous plaît aider!

Répondre

1

Vous semblez reconnaître qu'il s'agit d'une mauvaise structure de données. Vous devriez avoir une table de jonction - stocker des listes d'entiers comme une chaîne délimitée n'est pas une structure de données SQLish.

Parfois, nous sommes coincés avec les mauvaises décisions de conception d'autres personnes. Voici une chose que vous pouvez faire:

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