SQL内部连接到同一个表,在多个列上,多次
我有一个表来保存sql视图的关系SQL内部连接到同一个表,在多个列上,多次,sql,sql-server,join,Sql,Sql Server,Join,我有一个表来保存sql视图的关系 **ID** VIEW1 VIEW2 COLUMN RELATIONSHIP **1** 1 2 SalesOrderID INNER JOIN **5** 1 3 SalesOrderID INNER JOIN **6** 2 4 ProductID INNER JOIN 为了建立视图4和视图3之间的关系,我必须使用ID 1行作为中间引用,MSSQL中是否
**ID** VIEW1 VIEW2 COLUMN RELATIONSHIP
**1** 1 2 SalesOrderID INNER JOIN
**5** 1 3 SalesOrderID INNER JOIN
**6** 2 4 ProductID INNER JOIN
为了建立视图4和视图3之间的关系,我必须使用ID 1行作为中间引用,MSSQL中是否有一种可行的方法可以完成此任务我想您可能需要这样的东西:
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
-或(仅适用于内部联接)-
正如弗拉基米尔·巴拉诺夫(Vladimir Baranov)在上面的评论中所建议的那样——如果您需要以编程方式构建此视图,请选择(即表中的数据,以保存sql视图随时间变化的关系)您必须处理动态SQL。您尝试过什么吗?或者是否有可能在mssql视图之间建立关系关系关系数据库应具有静态模式(表、列、关系)。因此,要根据存储在表中的规则生成查询,您必须使用动态SQL—以编程方式构造查询文本,并使用
sp_executesql
或EXEC
运行查询。
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