2014-10-09 84 views
0

我知道这可能很简单,但它非常晚,对于我的生活我不记得如何去做。从其他表格中的一个字段创建表格或视图

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

我需要的是具有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

+0

请使用加入与TableA中distinct.share列,B,C.There必须是一个ID列加盟 – Recursive 2014-10-09 06:32:49

+0

@Anand我试过使用十字接点,但我仍然在视图中重复名称。我知道这可能是facepalm值得,但我现在正在运行烟气 – 2014-10-09 06:34:02

+0

提供了一些小提琴 – 2014-10-09 06:34:14

回答

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 
+0

请为所有陈述添加'distinct' – Recursive 2014-10-09 06:37:14

+0

@Anand我认为Union会给出不同的结果 – 2014-10-09 06:38:11

+0

@Ganesh_Devlekar:是一个工会得到不同的值 – Arion 2014-10-09 06:40:18

1

TRY这样的:

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
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 
相关问题