2016-08-22 130 views
2

我有一个表来保存的SQL视图SQL内连接到相同的表,在多个列上,多次

**ID** VIEW1 VIEW2 COLUMN   RELATIONSHIP 
**1** 1  2  SalesOrderID INNER JOIN 
**5** 1  3  SalesOrderID INNER JOIN 
**6** 2  4  ProductID  INNER JOIN 

关系,以建立我必须使用ID 1行视图4和3之间的关系对于中间标准,是在有一个MSSQL更多钞票的方式,我可以完成这个任务

+1

你尝试过什么吗? – jarlh

+0

还是有可能的方法来建立mssql视图之间的关系 – Lanister

+4

关系数据库预计有静态模式(表,列,关系)。因此,要根据存储在表中的规则生成查询,您必须使用动态SQL - 以编程方式构建查询的文本并使用'sp_executesql'或'EXEC'运行它。 –

回答

0

我怀疑你需要这样的事:

select v3.*, v4.* 
from View1 as v1 
    inner join View2 as v2 on v2.SalesOrderID = v1.SalesOrderID 
    inner join View3 as v3 on v3.SalesOrderID = v1.SalesOrderID 
    inner join View4 as v4 on v4.ProductID = v2.ProductID 

-or(用于机芯仅加入) -

select v3.*, v4.* 
from View1 as v1 
    ,View2 as v2 
    ,View3 as v3 
    ,View4 as v4 
where 
    v2.SalesOrderID = v1.SalesOrderID 
    and v3.SalesOrderID = v1.SalesOrderID 
    and v4.ProductID = v2.ProductID 

正如弗拉基米尔·巴拉诺夫在上述上面的评论建议 - 如果你需要建立这种编程方式选择(也就是你在表中的数据保存的SQL视图的关系随着时间的推移变化),你将不得不处理动态SQL。