选择两个不同视图的声明

时间:2015-06-22 14:36:10

标签: sql

我无法在任何地方找到我的具体问题的答案。

是否可以从两个不同的视图中进行选择?例如,我的代码看起来像这样。

select view1.col1, view1.col2, view1.col3
from dbo.view1
inner join ~~~~~
inner join ~~~~~

但我希望在同一个查询中包含来自不同视图的列。

select view1.co1, view1.col2, view1.col3, view2.col1
from dbo.view1,
     dbo.view2 (this is the line im not sure is possible or allowed)
inner join ~~~~~~
inner join ~~~~~

是否可以将不同的视图用作我的一个select语句的源,还是在SQL中不可能?

我使用SQL服务器作为我的数据库引擎。

3 个答案:

答案 0 :(得分:2)

是的,您可以在SELECT查询中使用两个不同的视图。如果彼此匹配列,则必须加入它们。

在SELECT子句中使用时,只需将两个不同的视图视为两个不同的表。

SELECT vw1.a, vw2.b
FROM View1 vw1 INNER JOIN View2 vw2
     ON vw1.id = vw2.id

对于澄清,可以将视图视为虚拟表或存储查询。用户可以通过引用Transact-SQL语句中的视图名称来使用此虚拟表,方法与引用表的方式相同。

修改

Select vw1.username, vw2.usertype 
From vw1 INNER JOIN vw2 
         ON vw1.colID = vw2.colID  <<<< Here you have to use 
                                   <<<< common column between two views to matched rows

答案 1 :(得分:1)

对于SELECT,视图仅适用于常规(基础)表。 JOIN和以前一样:

select view1.co1, view1.col2, view1.col3, view2.col1
from dbo.view1
inner join dbo.view2 ON ~~~~~
inner join ~~~~~~
inner join ~~~~~

答案 2 :(得分:1)

您应该使用加入

select view1.col1, view1.col2, view1.col3, view2.newColumn
from dbo.view1
inner join dbo.view2 on <key> = <key>;

这只是为了清楚你的理解,正如我从你的例子中看到的那样

from dbo.view1,
     dbo.view2 (this is the line im not sure is possible or allowed)
inner join ~~~~~

你无法理解它是如何工作的,我在这个加入之上的这个例子以及下面用旧技术你应该避免的这个表格

  select view1.col1, view1.col2, view1.col3, view2.newColumn
   from dbo.view1, dbo.view2
   where view1.key = view2.key

谢谢,祝你好运