在 SQL Server 中创建视图

Posted

技术标签:

【中文标题】在 SQL Server 中创建视图【英文标题】:Creating a view in SQL Server 【发布时间】:2014-12-24 08:28:42 【问题描述】:

我有 2 张桌子:

Contracts(ContactID、ContractNo、estimatedCost、CurrencyEstimatedCostID、ContractCost、CurrencyContractCostID)

CurrencyTypes(CurrencyID、CurrencyTypeName)。

我想用CurrencyTypeName 代替视图中的外键CurrencyEstimatedCostIDCurrencyContractCostID 查看合同表(在SQL Server 视图中)。

我使用此查询,但它只为CurrencyTypeName 返回一列(我希望CurrencyEstimatedCostIDCurrencyContractCostID 各有一列)。

SELECT 
    Contracts.contractID, Contracts.ContractNo, CurrencyTypes.CurrencyType
FROM 
    Contracts 
INNER JOIN 
    CurrencyTypes ON Contracts.CurrencyEstimatedCostID = CurrencyTypes.CurrencyType 
                     AND Contracts.CurrencyContractCostID = CurrencyTypes.CurrencyType

如何更改查询?

【问题讨论】:

【参考方案1】:

不是 100% 确定我是否理解您要执行的操作 - 但如果您有两列都充当 CurrencyTypes 表的外键,则您需要加入两次:

SELECT 
    c.contractID, c.ContractNo, 
    EstimatedCostCurrency = ct1.CurrencyType, 
    ContractCostCurrency = ct2.CurrencyType
FROM 
    Contracts  c
INNER JOIN 
    CurrencyTypes ct1 ON c.CurrencyEstimatedCostID = ct1.CurrencyID
INNER JOIN 
    CurrencyTypes ct2 ON c.CurrencyContractCostID = ct2.CurrencyID

【讨论】:

您不应该加入 CurrencyId 而不是 CurrencyType? @TienDinh:是的,很可能 - 最初的问题有这个连接条件,但这真的没有任何意义,你是对的

以上是关于在 SQL Server 中创建视图的主要内容,如果未能解决你的问题,请参考以下文章

在 SQL Server 中创建视图

在 SQL Server 中创建视图

SQL Server:尝试在存储过程中创建视图

在没有索引视图的情况下,在 SQL Server 中创建复杂视图的最佳方法是啥?

在特定数据库中创建 SQL Server 视图 [重复]

SQL Server 如何创建视图