產品案例
此主題提供有關產品資訊的詳細資料,這些資料是以 AdventureWorks 範例資料庫、產品相關資料表清單,以及展示一般資料表關係的範例查詢來呈現。
產品概觀
Adventure Works Cycles 是一家自行車製造公司,擁有下列四條生產線:
- 在 Adventure Works Cycles 公司製造的自行車。
- 屬於替換零件的自行車元件,如車輪、踏板或剎車組件。
- 從供應商採購的自行車運動服,再轉售給 Adventure Works Cycles 的客戶。
- 從供應商採購的自行車配件,再轉售給 Adventure Works Cycles 的客戶。
產品資料表
下表包含產品相關資料表內儲存之資料的簡短說明。
Schema.Table | 包含這種內容 | 註解 |
---|---|---|
用於製造自行車與自行車子組件之所有元件的清單。 |
ProductAssemblyID 資料行表示父產品或主要產品,而 ComponentID 表示用來組成父組件的子零件或個別零件。 |
|
用來說明產品的當地語言。 |
產品說明有阿拉伯文、英文、法文、希伯來文、簡體中文和泰文。 |
|
Adventure Works Cycles 中的位置清單,而產品與零件在這些位置上會存為存貨。例如,油漆儲存在倉庫的 Paint Storage 位置與製造工作中心的 Paint Shop 中,而 Paint Shop 即自行車架上漆所在。 |
|
|
有關 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. 檢視父產品的單一階層用料單清單。
下列範例顯示用於建立特定父系產品的所有元件: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