2013-01-16 1 views
0

J'ai une table avec des valeurs telles que « 1,2,3,4,5,6,7 » par ligne commeOracle combinant des colonnes avec des valeurs séparées par des virgules

ID Value 
101 5,6,7 
201 8,9,3 
301 3,4,5 

valeurs de la colonne de valeur sont la clé étrangère d'autres tableau B tableau B

5 A 
6 C 
7 N 

Est-il possible que je peux joindre ces deux tables dans une requête? Je veux passer 101 et obtenir des valeurs A C N.

+0

pouvez utiliser une mise en forme et il est difficile de suivre ce que vous voulez exactement. – cmd

+0

Par définition, vous ne pouvez pas avoir une clé étrangère dans B qui pointe vers la colonne 'value' dans A si 5 est une valeur valide dans B plutôt que dans la chaîne' 5,6,7'. Avez-vous vraiment une clé étrangère? Si vous le faites, le modèle de données doit être différent. –

Répondre

3

Si votre modèle est comme montré, quelque chose comme ça?

select a.id, listagg(new_value, ',') within group (order by new_value) new_value 
    from a 
     inner join b 
       on ','||a.value||',' like '%,'|| b.value ||',%' 
group by a.id 

http://www.sqlfiddle.com/#!4/74e46/1

Questions connexes