2013-04-05 2 views
0

Я пытаюсь создать представление, которое включает столбцы из нескольких таблиц.Не удается получить представление о работе на SQL Server

Это то, что он выглядит следующим образом:

enter image description here

И это мой запрос:

SELECT  
    Billing.WebPortalBilling.WebPortalBillingId, 
    Billing.WebPortalBilling.CorporationId, 
    Billing.WebPortalBilling.TokenId, 
    Billing.WebPortalBilling.GatewaySupportFee, 
    Billing.WebPortalBilling.GatewayPerTransactionFee, 
    Billing.WebPortalBilling.PortalPerCustomerFee, 
    Billing.WebPortalBilling.PortalSupportFee, 
    Customer.Account.AccountNumber, 
    Billing.WebPortalBilling.IsActive, 
    Customer.Customer.Name, 
    Customer.Customer.TaxCode, 
    Company.CorporationStructure.Branch 
FROM   
    Company.CorporationStructure 
RIGHT OUTER JOIN 
    Customer.Account ON Company.CorporationStructure.CorporationStructureId = Customer.Account.CorporationStructureId 
RIGHT OUTER JOIN 
    Customer.Customer ON Company.CorporationStructure.Branch = Customer.Customer.Branch 
RIGHT OUTER JOIN 
    Billing.WebPortalBilling ON Customer.Account.CorporationId = Billing.WebPortalBilling.CorporationId 
WHERE  
    (Billing.WebPortalBilling.IsActive = 1) 

Это возвращает только 1 запись, которая не является правильным. Я пытаюсь связать имя Клиента с таблицей WebPortalBilling вместе с номером учетной записи и branth в двух других таблицах.

Я новичок в sql, поэтому будьте добры.

Спасибо!

+1

ли вы влево или вправо присоединиться на webportalbilling, но требуют определенного значения в столбце webportalbilling, то он делает это по существу внутреннее соединение. Выньте и посмотрите, что вы получите. Или укажите null как опцию. – Narnian

ответ

2

Как прокомментировал где убивает внешний
Попробуйте

SELECT  
    Billing.WebPortalBilling.WebPortalBillingId, 
    Billing.WebPortalBilling.CorporationId, 
    Billing.WebPortalBilling.TokenId, 
    Billing.WebPortalBilling.GatewaySupportFee, 
    Billing.WebPortalBilling.GatewayPerTransactionFee, 
    Billing.WebPortalBilling.PortalPerCustomerFee, 
    Billing.WebPortalBilling.PortalSupportFee, 
    Customer.Account.AccountNumber, 
    Billing.WebPortalBilling.IsActive, 
    Customer.Customer.Name, 
    Customer.Customer.TaxCode, 
    Company.CorporationStructure.Branch 
FROM   
    Company.CorporationStructure 
RIGHT OUTER JOIN 
    Customer.Account ON Company.CorporationStructure.CorporationStructureId = Customer.Account.CorporationStructureId 
RIGHT OUTER JOIN 
    Customer.Customer ON Company.CorporationStructure.Branch = Customer.Customer.Branch 
RIGHT OUTER JOIN Billing.WebPortalBilling 
    ON Customer.Account.CorporationId = Billing.WebPortalBilling.CorporationId 
    AND Billing.WebPortalBilling.IsActive = 1 
+0

gotcha ... Я получаю сейчас tyvm! – ErocM

0

Попробуйте это, я думаю, что соединения слева более ясны.

SELECT  
    B.WebPortalBillingId, 
    B.CorporationId, 
    B.TokenId, 
    B.GatewaySupportFee, 
    B.GatewayPerTransactionFee, 
    B.PortalPerCustomerFee, 
    B.PortalSupportFee, 
    C.AccountNumber, 
    B.IsActive, 
    C.Name, 
    C.TaxCode, 
    CS.Branch 
FROM Customer.Customer C 
    LEFT JOIN Company.CorporationStructure CS ON CS.Branch = C.Branch 
    LEFT JOIN Customer.Account A ON CS.CorporationStructureId = A.CorporationStructureId 
    LEFT JOIN Billing.WebPortalBilling B ON A.CorporationId = B.CorporationId 
WHERE B.IsActive = 1 
Смежные вопросы