Scenario relativo ai prodotti
In questo argomento vengono fornite informazioni dettagliate sui dati relativi ai prodotti rappresentati nel database di esempio AdventureWorks, un elenco di tabelle correlate ai prodotti ed esempi di query che illustrano relazioni comuni tra le tabelle.
Panoramica sui prodotti
Adventure Works Cycles è un'azienda produttrice di biciclette che dispone delle quattro linee di prodotti seguenti:
Biciclette prodotte presso la società Adventure Works Cycles.
Componenti per biciclette, ovvero parti di ricambio quali ruote, pedali e freni.
Abbigliamento per ciclisti acquistato dai fornitori a fini di rivendita ai clienti della società Adventure Works Cycles.
Accessori per ciclisti acquistati dai fornitori a fini di rivendita ai clienti della società Adventure Works Cycles.
Tabelle correlate ai prodotti
Nella tabella seguente è inclusa una breve descrizione dei dati archiviati nelle tabelle correlate ai prodotti.
Schema.Tabella |
Tipo di contenuti |
Commento |
---|---|---|
Elenco di tutti i componenti utilizzati per produrre le biciclette e i rispettivi componenti di assemblaggio. |
La colonna ProductAssemblyID rappresenta il prodotto padre, o principale, mentre ComponentID rappresenta le singole parti, o figli, utilizzate per realizzare il componente padre. |
|
Lingue in cui sono disponibili le descrizioni dei prodotti. |
Le descrizioni dei prodotti sono disponibili in arabo, cinese semplificato, ebraico, francese, inglese e thai. |
|
Elenco di ubicazioni di stoccaggio all'interno della società Adventure Works Cycles nelle quali prodotti e componenti sono immagazzinati a fini di inventario. Ad esempio, la vernice è presente nell'ubicazione Paint Storage nel magazzino e nel centro di produzione Paint Shop dove avviene la verniciatura dei telai delle biciclette. |
|
|
Informazioni relative a tutti i prodotti venduti da Adventure Works Cycles o utilizzati per produrre le biciclette e i rispettivi componenti di Adventure Works Cycles. |
Nella colonna FinishedGoodsFlag viene indicato se un prodotto è in vendita. I prodotti non in vendita sono componenti di prodotti in vendita. Ad esempio, la bicicletta è il prodotto in vendita, mentre il foglio di metallo utilizzato per realizzarne il telaio non lo è. |
|
Classificazione generale di massima dei prodotti. Ad esempio, bicicletta o accessorio. |
|
|
Costo dei prodotti nel tempo. |
|
|
Descrizione completa dei prodotti nelle varie lingue. |
Le descrizioni dei prodotti sono disponibili in arabo, cinese semplificato, ebraico, francese, inglese e thai. |
|
Il livello di inventario dei prodotti in base alla rispettiva ubicazione. Vedere la colonna Production.Location citata in precedenza. |
|
|
Listino prezzi dei prodotti con le relative variazioni apportate nel tempo. |
|
|
Modelli diversi di un prodotto. Ad esempio, Mountain-100 o LL Touring Frame. |
Nella colonna CatalogDescription sono incluse ulteriori informazioni sui prodotti archiviate come tipi di dati xml. Nella colonna Instructions sono disponibili istruzioni sulla produzione archiviate come tipi di dati xml. |
|
Riferimento incrociato tra modelli di prodotti, descrizioni e lingue in cui queste ultime sono disponibili. |
|
|
Immagini dei prodotti venduti dalla società Adventure Works Cycles. |
Le immagini sono archiviate come tipo di dati varbinary(max). |
|
Commenti dei clienti sui prodotti Adventure Works Cycles. |
|
|
Sottocategorie di prodotti Ad esempio, Mountain, Road e Touring sono sottocategorie della categoria Bike. |
|
Esempi
È possibile utilizzare le query seguenti per visualizzare i dati relativi ai prodotti e acquisire familiarità con le relazioni tra le tabelle correlate ai prodotti.
A. Visualizzazione dei prodotti per categoria, sottocategoria e modello
Nell'esempio seguente viene restituito un elenco dei prodotti organizzato in base a categoria, sottocategoria e modello. Non sono inclusi i prodotti non associati ad alcuna categoria. Per includere tutti i prodotti, modificare il join in ProductCategory in un join completo.
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. Visualizzazione delle descrizioni dei prodotti per modello
Sono presenti descrizioni per tutti i modelli di prodotti. Ogni descrizione è disponibile in più lingue. Nell'esempio seguente vengono visualizzate le singole descrizioni in tutte le lingue in cui sono disponibili.
[!NOTA]
Le descrizioni in alcune lingue potrebbero non essere visualizzate correttamente se i file di supporto linguistico supplementare per gli alfabeti non latini e le lingue orientali non sono installati. Per installare tali file, vedere la documentazione di Windows relativa alle Opzioni internazionali e della lingua.
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. Visualizzazione di un elenco di distinte base a livello singolo relative a un prodotto principale
Nell'esempio seguente vengono visualizzati tutti i componenti utilizzati per realizzare uno specifico prodotto di riferimento principale, ovvero 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