共用方式為


產品案例

此主題提供有關產品資訊的詳細資料,這些資料是以 AdventureWorks 範例資料庫、產品相關資料表清單,以及展示一般資料表關係的範例查詢來呈現。

產品概觀

Adventure Works Cycles 是一家自行車製造公司,擁有下列四條生產線:

  • 在 Adventure Works Cycles 公司製造的自行車。

  • 屬於替換零件的自行車元件,如車輪、踏板或剎車組件。

  • 從供應商採購的自行車運動服,再轉售給 Adventure Works Cycles 的客戶。

  • 從供應商採購的自行車配件,再轉售給 Adventure Works Cycles 的客戶。

產品資料表

下表包含產品相關資料表內儲存之資料的簡短說明。

Schema.Table

包含這種內容

註解

Production.BillOfMaterials

用於製造自行車與自行車子組件之所有元件的清單。

ProductAssemblyID 資料行表示父產品或主要產品,而 ComponentID 表示用來組成父組件的子零件或個別零件。

Production.Culture

用來說明產品的當地語言。

產品說明有阿拉伯文、英文、法文、希伯來文、簡體中文和泰文。

Production.Location

Adventure Works Cycles 中的位置清單,而產品與零件在這些位置上會存為存貨。例如,油漆儲存在倉庫的 Paint Storage 位置與製造工作中心的 Paint Shop 中,而 Paint Shop 即自行車架上漆所在。

 

Production.Product

有關 Adventure Works Cycles 售出的每一個產品或用於製造 Adventure Works Cycles 自行車與自行車元件的資訊。

FinishedGoodsFlag 資料行指出產品是否已售出。未售出的產品是已售出之產品的元件。例如,自行車會售出,但是用於製作自行車架的鐵板則不會售出。

Production.ProductCategory

產品最常見的分類。例如,自行車或配件。

 

Production.ProductCostHistory

一段時間內產品的成本。

 

Production.ProductDescription

各種語言的產品完整說明。

產品說明有阿拉伯文、英文、法文、希伯來文、簡體中文和泰文。

Production.ProductInventory

產品依位置區分的存貨層級。請參閱前面提到的 Production.Location

 

Production.ProductListPriceHistory

一段時間內產品的定價。

 

Production.ProductModel

與產品相關聯的產品型號。例如,Mountain-100 或 LL Touring Frame。

CatalogDescription 資料行包含其他產品資訊,其資料類型為 xml。Instructions 資料行包含產品製造指示,其資料類型為 xml。

ProductModelProductDescriptionCulture

產品型號、產品說明以及翻譯成當地語言之說明之間的交互參考。

 

Production.ProductPhoto

Adventure Works Cycles 銷售的產品影像。

用來儲存影像的資料類型為 varbinary(max)。

Production.ProductReview

客戶對 Adventure Works Cycles 產品的評價。

 

Production.ProductSubcategory

產品類別的子類別。例如,"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