2014-12-24 110 views
1

一个观点我有2个表:创建SQL Server中

  • 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 

如何更改查询?

回答

0

不是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 
+0

不该”你加入CurrencyId而不是CurrencyType? –

+0

@TienDinh:是的,最有可能的 - 最初的问题有这个连接条件,但这真的没有任何意义,你是对的 –

+0

@marc_s谢谢。 – Question