2016-07-05 59 views
0

伙计们请帮助我找到一个解决方案....我想连接两个表,有一个公共变量,但在一个表中存储','为varchar,即id在其他表格中。如何可以用两个表的连接,并采取值如何加入没有公共属性的两个表

+0

是普通属性是' id'和'table1'具有id ='22,12'和'table2'具有id ='2212',这样? – Arulkumar

+2

请添加示例表格和数据,请 – Backs

+2

考虑更改您的表格结构。您不应将逗号分隔值存储在列中 –

回答

1

尝试这种方式

1台

Name | Course Id 
==================== 
Zishan | 1,2,3           
Ellen | 2,3,4 

第二台

course id | course name 
======================= 
    1  | java 
    2  | C++ 
    3  | oracle 
    4  | dot net 

查询

SELECT names.name, 
     courses.course_name 
FROM names 
     INNER JOIN courses 
       ON ',' + names.course_ids + ',' LIKE '%,' 
                + Cast(courses.course_id AS NVARCHAR(20)) 
                + ',%' 
1
DECLARE @T1 TABLE (ID VARCHAR(MAX),VALUE VARCHAR(MAX)) 
DECLARE @T2 TABLE (ID INT,VALUE VARCHAR(MAX)) 
INSERT INTO @T1 VALUES ('21,22','ABC'),('30,15','DEF') 
INSERT INTO @T2 VALUES (2122,'GHI'),(3020,'JKL') 

SELECT T1.*,T2.* 
FROM @T1 T1 
JOIN @T2 T2 ON T2.ID = CAST(REPLACE(T1.ID,',','') AS INT) 
0

我认为这将是非常简单的...

如果您的表布局什么穆克什有,查询可以进行简单:

SELECT n.name, 
     c.course_name 
FROM 
     names n 
INNER JOIN 
     courses c ON '%' + c.courseid + '%' LIKE n.courseid 
相关问题