2014-12-24 4 views
1

У меня есть 2 таблицы:Создание представления в SQL Server

  • Contracts (ContactID, ContractNo, estimatedCost, CurrencyEstimatedCostID, ContractCost, CurrencyContractCostID)

  • CurrencyTypes (CurrencyID, CurrencyTypeName).

Я хочу, чтобы просмотреть таблицу контракт с CurrencyTypeName вместо внешних ключей CurrencyEstimatedCostID и CurrencyContractCostID в представлении (в представлении SQL Server).

Я использую этот запрос, но он возвращает только один столбец для CurrencyTypeName (я хочу один столбец для каждого из CurrencyEstimatedCostID и CurrencyContractCostID).

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

Смежные вопросы