从其他表中的一个字段创建表或视图

时间:2014-10-09 06:30:51

标签: sql sql-server tsql

我知道这可能很简单,但它很晚,而且对于我的生活,我不记得该怎么做。

我有四个表,A,B和C.每个表都有一个ID,Name和其他一些列。

我需要的是一个具有ID,Name_A,Name_B和Name_C的表E.因此,如果我添加另一个名称来表示B,它将更新这个新的E表以包含它。

我尝试创建一个视图:

Create View VwNames
as
SELECT        dbo.TableA.name AS NameA, 
              dbo.TableB.name AS NameB, 
              dbo.TableC.name AS NameC

FROM          dbo.TableA, 
              dbo.TableB, 
              dbo.TableC

但是我得到了一个重复名称的视图,例如

Juan   Pedro  Mario
Juan   Mario  Pedro
Mario  Juan   Pedro
Mario  Pedro  Juan
Pedro  Juan   Mario
Pedro  Mario  Juan

我需要的是向我展示的东西:

Juan
Mario
Pedro

Juan Mario Pedro

任何帮助都会非常感激,我现在​​已经找了几个小时。

提前多多感谢

编辑:

截至目前我的观点如何:

Current View

3 个答案:

答案 0 :(得分:1)

尝试这样:

Create View VwNames
as

SELECT    distinct    dbo.TableA.name AS NameA, 
              dbo.TableB.name AS NameB, 
              dbo.TableC.name AS NameC

FROM          dbo.TableA TA LEFT JOIN
              ON TA.col1=TB.col1
              dbo.TableB TB LEFT JOIN
              ON TB.col1=T.col1
              dbo.Table T

答案 1 :(得分:1)

你可以使用联盟。像这样:

SELECT dbo.TableA.name FROM dbo.TableA UNION
SELECT dbo.TableB.name FROM dbo.TableB UNION
SELECT dbo.TableC.name FROM dbo.TableC

这将让你输出:

Juan
Mario
Pedro

答案 2 :(得分:1)

Create View VwNames
as
SELECT        distinct a.name AS NameA, 
              b.name AS NameB, 
              c.name AS NameC

FROM          dbo.TableA a join
              dbo.TableB b 
            on b.id=a.id
            join 
              dbo.Table c
            on c.id=b.id