Share via


Scenario relativo ad acquisti e fornitori

Il reparto acquisti della società Adventure Works Cycles si occupa dell'approvvigionamento di materie prime e componenti utilizzati per la realizzazione delle biciclette Adventure Works Cycles. Adventure Works Cycles acquista inoltre prodotti a scopo di rivendita, ad esempio abbigliamento per ciclisti e accessori quali borracce e pompe. Le informazioni relative a questi prodotti e ai fornitori presso i quali vengono acquistati sono archiviate nel database di esempio AdventureWorks.

In questo argomento vengono fornite informazioni dettagliate sui dati relativi ai fornitori rappresentati nel database di esempio, uno schema delle principali tabelle correlate ai fornitori ed esempi di query che illustrano relazioni comuni tra le tabelle.

Tabelle correlate a fornitori e acquisti

Nella tabella seguente è inclusa una breve descrizione dei dati archiviati in tali tabelle.

Schema.Tabella

Tipo di contenuti

Commenti

Person.Address

Indirizzi di tutti i clienti.

Ai clienti possono essere associati più indirizzi. Ad esempio, a un cliente possono essere associati un indirizzo per la fatturazione e uno diverso per le spedizioni.

La tabella associativa VendorAddress definisce il mapping tra i fornitori e i rispettivi indirizzi.

Nella tabella Address sono inoltre inclusi gli indirizzi dei dipendenti e dei clienti della società Adventure Works Cycles.

Person.Contact

Nomi dei dipendenti del fornitore ai quali gli addetti agli acquisti della società Adventure Works Cycles si rivolgono per ordinare i prodotti.

A un fornitore possono essere associati più contatti. Ad esempio, un addetto alle vendite e un responsabile che possono rappresentare rispettivamente il contatto principale e quello secondario per l'addetto agli acquisti della società Adventure Works Cycles.

La tabella associativa VendorContact definisce il mapping tra contatti e fornitori.

La colonna AdditionalContactInfo contiene dati aggiuntivi, quali numeri di telefono (cellulare, fax e così via), specifici del contatto. Per questa colonna viene utilizzato il tipo di dati xml. Per ulteriori informazioni, vedere Informazioni sulla colonna XML Contact.AdditionalContactInfo.

Production.ProductVendor

Definisce il mapping tra i fornitori e i rispettivi prodotti.

È possibile che un prodotto sia disponibile presso più fornitori o che diversi prodotti possano essere acquistati da uno stesso fornitore.

 

Purchasing.PurchaseOrderDetail

Dettagli relativi all'ordine di acquisto, ad esempio i prodotti ordinati, la quantità e il prezzo unitario.

 

Purchasing.PurchaseOrderHeader

Informazioni di riepilogo relative all'ordine di acquisto, ad esempio il totale, la data e lo stato.

Le tabelle PurchaseOrderHeader e PurchaseOrderDetail insieme creano una relazione master-dettagli.

Purchasing.ShipMethod

Tabella di ricerca utilizzata per archiviare informazioni relative alle modalità standard di spedizione dei prodotti.

La colonna ShipMethodID è inclusa nella tabella PurchaseOrderHeader.

Purchasing.Vendor

Dettagli relativi ai fornitori, ad esempio il nome e il numero di conto.

 

Purchasing.VendorAddress

Definisce i collegamenti tra i clienti e gli indirizzi presenti nella tabella Address.

Gli indirizzi sono organizzati per tipo, ad esempio fatturazione, abitazione, spedizione e così via. La colonna AddressTypeID viene associata alla tabella AddressType.

Purchasing.VendorContact

Indirizzi di tutti i clienti.

Ai clienti possono essere associati più indirizzi. Ad esempio, a un cliente possono essere associati un indirizzo per la fatturazione e uno diverso per le spedizioni.

Si tratta di una tabella associativa. Vedere le tabelle Contact e Vendor.

Esempi

È possibile utilizzare le query seguenti per visualizzare i dati relativi agli acquisti e ai fornitori e acquisire familiarità con le relazioni tra le tabelle correlate ad acquisti e fornitori.

A. Visualizzazione dei fornitori in base alla località

Nell'esempio seguente viene visualizzato un elenco dei fornitori con i rispettivi indirizzi.

USE AdventureWorks;
GO
SELECT V.VendorID, V.Name AS Vendor, A.AddressLine1, A.AddressLine2, A.City, SP.Name AS State, CR.Name AS Country
FROM Purchasing.Vendor AS V 
    JOIN Purchasing.VendorAddress AS VA ON VA.VendorID = V.VendorID
    JOIN Person.Address AS A on A.AddressID = VA.AddressID
    JOIN Person.StateProvince AS SP on SP.StateProvinceID =         A.StateProvinceID
    JOIN Person.CountryRegion AS CR ON CR.CountryRegionCode = SP.CountryRegionCode
GROUP BY V.VendorID, V.Name, A.AddressLine1, A.AddressLine2, A.City, SP.Name, CR.Name
ORDER BY V.VendorID;
GO

B. Visualizzazione dei prodotti disponibili presso i fornitori

Nell'esempio seguente viene visualizzato un elenco dei prodotti acquistati dalla società Adventure Works Cycles presso i fornitori.

USE AdventureWorks;
GO
SELECT P.ProductNumber, P.Name AS Product, V.Name AS Vendor, PV.LastReceiptCost
FROM Production.Product AS P
    JOIN Purchasing.ProductVendor AS PV ON P.ProductID = PV.ProductID
    JOIN Purchasing.Vendor AS V ON V.VendorID = PV.VendorID
ORDER BY P.Name ;
GO

C. Visualizzazione dei contatti in base al fornitore a cui appartengono

Nell'esempio seguente viene visualizzato un elenco dei contatti presso i fornitori. Tali contatti sono dipendenti del fornitore ai quali i dipendenti del reparto acquisti della società Adventure Works Cycles si rivolgono per ordinare componenti e prodotti.

GO
SELECT V.Name as Vendor, C.FirstName, C.LastName, CT.Name AS Title 
FROM Person.Contact AS C 
    JOIN Purchasing.VendorContact VC ON C.ContactID = VC.ContactID
    JOIN Person.ContactType CT ON CT.ContactTypeID = VC.ContactTypeID
    JOIN Purchasing.Vendor V ON V.VendorID = VC.VendorID
ORDER BY V.Name;
GO

D. Visualizzazione degli acquisti in base al fornitore

Nell'esempio seguente vengono visualizzati i dari relativi ai fornitori e agli ordini di acquisto a essi associati.

USE AdventureWorks;
GO
SELECT V.Name AS Vendor, SUM(PH.TotalDue)AS [Total Purchase],
    AVG(PH.TotalDue)AS [Average Purchase], MIN(PH.TotalDue) 
    AS [Minimum Purchase], MAX(PH.TotalDue)AS [Maximum Purchase] 
FROM Purchasing.Vendor AS V
    JOIN Purchasing.PurchaseOrderHeader AS PH ON V.VendorID = PH.VendorID
GROUP BY V.Name
ORDER BY V.Name;
GO