Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL内部连接到同一个表,在多个列上,多次_Sql_Sql Server_Join - Fatal编程技术网

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中是否

我有一个表来保存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中是否有一种可行的方法可以完成此任务

我想您可能需要这样的东西:

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