複数のサブテーブルの結合を処理するために SQL Server 2005 クエリを作成する方法について助けが必要です。これが私のシナリオです:
テーブル:
お客様
- 顧客_PK
注文
- Order_PK
- OrdersTypeA_FK
- OrdersTypeB_FK
- OrdersTypeC_FK
- Customer_FK
注文タイプA
- OrdersTypeA_PK
- Shipper_FK
注文タイプB
- OrdersTypeB_PK
- Shipper_FK
注文タイプC
- OrdersTypeC_PK
- Shipper_FK
荷送人
- 荷送人_PK
- 荷送人住所_FK
荷送人住所
- 荷送人住所_PK
- 荷送人の州
Orders テーブルには、次のようなデータがあります。
Order_PK OrdersTypeA_FK OrdersTypeB_FK OrdersTypeC_FK Customer_FK
-------- -------------- -------------- -------------- -----------
1 1 null null 1
2 null 1 null 2
3 null null 1 3
私の問題は、3 つの OrdersType テーブルのいずれかから Shipper_FK を見つけて、select join ステートメントで ShipperAddress を取得する必要があることです。Orders テーブルには、行ごとに OrdersType FK が 1 つだけ含まれます。OrdersType テーブルから取得する必要があるのは、ShipperAddress テーブルに結合できるように Shipper_FK だけです。
それで、結合はどのように見えますか???
select
ShipperAddress.ShipperState
from Customers
left join Orders on Orders.Customer_FK = Customers.Customer_PK
????????
left join Shippers on Shipper_PK = ??????.Shipper_FK
left join ShipperAddress on ShipperAddress.ShipperAddress_PK = Shippers.ShipperAddress_FK
OrdersType テーブルごとに、ShipperAddress に個別に結合することはできません。これは、OrdersType レベルにさらに多くのテーブルがある問題の小さなサンプルです。Shipper_FK は、各 OrdersType テーブルで同じです。結合ステートメントを続行するには、どの OrdersType テーブルから来たかに関係なく、Shipper_FK に到達する必要があります。どうすればそれができますか?