次の 2 つのテーブルがあるとします。
テーブル パーツ:
Location PartNum Descrip
-------- ------- --------
Whse1 abc Frobbitz
Whse2 abc Frobbitz
Whse3 def Widget
Whse3 def Widget
テーブルのステータス:
Location PartNum Status
--------- ------- --------------
*Default* abc Ready To Ship
*Default* def Ready To Ship
Whse1 abc Backordered
ほとんどの場合、デフォルトのステータスを使用する必要があります。
ステータスを取得するには、クエリは次のようになります。
SELECT p.Location,p.PartNum,p.Descrip,s.Status FROM Parts p
LEFT JOIN Status s ON s.PartNum=p.PartNum AND
s.Location = (SELECT MAX(Location) FROM Status s1
WHERE s1.PartNum=p.PartNum AND s1.Location
IN('*Default*',p.Location))
問題は、これが最も効率的な (または少なくとも合理的に効率的な) 方法であるかということです。私の実際のアプリケーションでは、1 つのクエリで最大 7 つのテーブルが結合されます。