製品シナリオ
このトピックでは、AdventureWorks サンプル データベースで表される製品情報、製品関連のテーブルの一覧、および共通のテーブル リレーションシップを示すサンプル クエリの詳細について説明します。
製品の概要
自転車製造会社である Adventure Works Cycles には、次の 4 つの製品ラインがあります。
Adventure Works Cycles 社で製造する自転車
ホイール、ペダル、またはブレーキの組み立て品などの自転車の交換部品
Adventure Works Cycles の顧客への再販用として仕入先から購入する自転車用衣料品
Adventure Works Cycles の顧客への再販用として仕入先から購入する自転車用付属品
製品テーブル
次の表に、製品関連のテーブルに格納されるデータの簡単な説明を示します。
Schema.Table |
格納されるデータの内容 |
コメント |
---|---|---|
自転車および自転車の部分組み立て品の製造に使用されるすべての部品の一覧。 |
ProductAssemblyID 列は親製品 (主要製品) を表し、ComponentID は親の組み立てに使用する子部品 (個々の部品) を表します。 |
|
ローカライズされた製品説明で使用されている言語。 |
製品説明は、アラビア語、英語、フランス語、ヘブライ語、簡体字中国語、およびタイ語で表示できます。 |
|
製品や部品の在庫が保管されている Adventure Works Cycles 内の場所の一覧。たとえば塗料は、倉庫内の塗料保管場所と、自転車フレームの塗装を行う塗装部門製造作業センターに保管されています。 |
|
|
Adventure Works Cycles で販売している製品、および Adventure Works Cycles 製自転車や自転車部品の製造に使用される製品の情報。 |
FinishedGoodsFlag 列は、製品が販売対象かどうかを示します。販売対象外の製品は、販売対象製品の部品です。たとえば、自転車は販売対象となりますが、自転車フレームの製造に使用される金属板は販売の対象になりません。 |
|
製品の最も一般的な分類。バイクや付属品などがこれに当たります。 |
|
|
製品のコストの履歴。 |
|
|
各言語で記述された製品の詳細な説明。 |
製品説明は、アラビア語、英語、フランス語、ヘブライ語、簡体字中国語、およびタイ語で表示できます。 |
|
製品の場所別の在庫レベル。上記の「Production.Location」を参照してください。 |
|
|
製品の表示価格の履歴。 |
|
|
製品に関連付けられている製品モデル。Mountain-100 や LL Touring Frame などがこれに当たります。 |
CatalogDescription 列には、追加の製品情報が xml データ型で格納されます。Instructions 列には、製品の製造手順書が xml データ型で格納されます。 |
|
製品モデル、製品説明、および説明のローカライズ言語の相互参照。 |
|
|
Adventure Works Cycles で販売されている製品の画像。 |
画像は、varbinary(max) データ型で格納されます。 |
|
Adventure Works Cycles 製品の顧客レビュー。 |
|
|
製品カテゴリのサブカテゴリ。たとえば、Bike カテゴリのサブカテゴリは、Mountain、Road、Touring などになります。 |
|
例
次のクエリを使用し、製品データを表示することによって、製品テーブルのリレーションシップについて詳細に理解することができます。
A. カテゴリ、サブカテゴリ、およびモデル別の製品の表示
次の例では、カテゴリ、サブカテゴリ、およびモデル別にすべての製品が一覧表示されます。分類されていない製品は、表示されません。すべての製品を表示対象とするには、ProductCategory の結合を完全結合に変更します。
USE AdventureWorks;
GO
SELECT PC.Name AS Category, PSC.Name AS Subcategory,
PM.Name AS Model, P.Name AS Product
FROM Production.Product AS P
FULL JOIN Production.ProductModel AS PM ON PM.ProductModelID = P.ProductModelID
FULL JOIN Production.ProductSubcategory AS PSC ON PSC.ProductSubcategoryID = P.ProductSubcategoryID
JOIN Production.ProductCategory AS PC ON PC.ProductCategoryID = PSC.ProductCategoryID
ORDER BY PC.Name, PSC.Name ;
GO
B. 製品モデル別の製品説明の表示
製品説明は、製品モデルごとに作成されます。各説明は複数の言語で表示できます。次の例では、各製品の説明が各言語で表示されます。
注意 |
---|
複雑なスクリプトや東アジア言語などの一部の言語を適切に表示するには、補足言語サポート ファイルのインストールが必要になる場合があります。これらのファイルをインストールするには、Windows の地域と言語のオプションに関するドキュメントを参照してください。 |
USE AdventureWorks;
GO
SELECT PM.ProductModelID, PM.Name AS [Product Model], Description, PL.CultureID, CL.Name AS Language
FROM Production.ProductModel AS PM
JOIN Production.ProductModelProductDescriptionCulture AS PL
ON PM.ProductModelID = PL.ProductModelID
JOIN Production.Culture AS CL ON CL.CultureID = PL.CultureID
JOIN Production.ProductDescription AS PD
ON PD.ProductDescriptionID = PL.ProductDescriptionID
ORDER BY PM.ProductModelID ;
GO
C. 1 つにまとめられた、親製品に関する単一レベル部品表の表示
次の例では、特定の親製品 (ProductAssemblyID) の製造に使用される部品がすべて表示されます。
USE AdventureWorks;
GO
WITH Parts(AssemblyID, ComponentID, PerAssemblyQty, EndDate, ComponentLevel) AS
(
SELECT b.ProductAssemblyID, b.ComponentID, b.PerAssemblyQty,
b.EndDate, 0 AS ComponentLevel
FROM Production.BillOfMaterials AS b
WHERE b.ProductAssemblyID = 800
AND b.EndDate IS NULL
UNION ALL
SELECT bom.ProductAssemblyID, bom.ComponentID, p.PerAssemblyQty,
bom.EndDate, ComponentLevel + 1
FROM Production.BillOfMaterials AS bom
INNER JOIN Parts AS p
ON bom.ProductAssemblyID = p.ComponentID
AND bom.EndDate IS NULL
)
SELECT AssemblyID, ComponentID, Name, PerAssemblyQty, EndDate,
ComponentLevel
FROM Parts AS p
INNER JOIN Production.Product AS pr
ON p.ComponentID = pr.ProductID
ORDER BY ComponentLevel, AssemblyID, ComponentID;
GO