2016-04-08 23 views
0

Katılmaya çalıştığım iki tablo var. Bir tablonun içinde kimlikleri olan bir sütun var ve ikinci tabloda hücre başına birden fazla kimlik içerebilir, ancak aynı kimlikleri olan farklı bir tabloya bir sol birleştirme yapmaya çalışıyorum. Örneğin, ilk tablomun 123 kimlik değerine sahip olması ve ikinci tablonun 123;724;823 kimlik değerine sahip olması durumunda, bu iki satırı birleştirmek için bir yol var mı?SQL - Birden çok değer içeren bir sütunda birleşim kullanarak, hücrelerde

cevap

0

Sorgu tasarımcısında denediniz mi? Orada birleşme yapmak çok kolay. koşul X, Y, Z

Umut size yardımcı olacaktır NEREDE masa isim1 SOLDAN

SEÇ COLUMN_NAMES ID_column-isim1 = ID_Column-NAME2 ÜZERİNE masa ad2 KATILIN. Birden like operatörleri kullanarak

0
select * 
from 
(
    select '123' as id 
    union select '124' 
) as t1 
left join 
(
    select '123;001;002' as id 
    union select '001;123;002' 
    union select '001;002;123' 
) as t2 on 
    t2.id = t1.id 
    or t2.id like t1.id + ';%' 
    or t2.id like '%;' + t1.id + ';%' 
    or t2.id like '%;' + t1.id 
0

muhtemelen en hızlı yoludur, ancak bu bir DelimitedSplit8K gibi bir dize ayırıcı işlevini varsa, bir tabloya dışarı değerleri bölmek ve ona katılabilir.

SELECT * 
FROM table1 t1 
     LEFT JOIN (
       SELECT * 
       FROM table2 t2 
         OUTER APPLY (
          SELECT * 
          FROM dbo.[DelimitedSplit8K] (t2.id,';') -- splits the values in multi id column 
         ) t 
       ) t ON t.Item = t1.id -- t.Item is the value generated from the DelimitedSplit8K TVF 
İlgili konular