SQL 内连接到同一个表,在多个列上,多次
Posted
技术标签:
【中文标题】SQL 内连接到同一个表,在多个列上,多次【英文标题】:SQL inner join to the same table, on multiple columns, multiple times 【发布时间】:2016-08-22 11:22:37 【问题描述】:我有一个表来保存 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 中是否有可行的方法可以完成此任务
【问题讨论】:
你有没有尝试过? 或者有没有办法在mssql视图之间建立关系 关系数据库应具有静态架构(表、列、关系)。因此,要根据存储在表中的规则生成查询,您必须使用动态 SQL - 以编程方式构建查询文本并使用sp_executesql
或 EXEC
运行它。
【参考方案1】:
我怀疑你需要这样的东西:
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
-或(仅适用于内部连接)-
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
正如 Vladimir Baranov 在上面的评论中所建议的那样 - 如果您需要以编程方式构建此选择(即您在 表中的数据以保存 sql 视图的关系随着时间的推移而变化),您将不得不处理使用动态 SQL。
【讨论】:
以上是关于SQL 内连接到同一个表,在多个列上,多次的主要内容,如果未能解决你的问题,请参考以下文章