0

複数のテーブルの列を含むビューを作成しようとしています。

これは次のようになります。

ここに画像の説明を入力

そして、これは私のクエリです:

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 テーブルに結びつけ、他の 2 つのテーブルのアカウント番号とブランスを関連付けようとしています。

私はSQLが初めてなので、親切にしてください。

ありがとう!

4

2 に答える 2

2

コメントしたように、外側の
Tryを殺している場所

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
于 2013-04-05T15:35:18.770 に答える
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
于 2013-04-05T15:19:32.217 に答える