采购方案和供应商方案
在 Adventure Works Cycles,采购部门购买 Adventure Works Cycles 自行车生产中使用的原材料和零件。Adventure Works Cycles 也购买一些产品以进行转售,例如,自行车装饰件和自行车附件,像水瓶和打气筒。有关这些产品及其供应商的信息存储在 AdventureWorks 示例数据库中。
本主题详细介绍了示例数据库中的供应商、与主要供应商相关的表的架构关系图以及用于说明常用表关系的查询示例。
供应商和采购表
下表简要说明了存储在这些表中的数据。
Schema.Table | 包含以下内容 | 注释 |
---|---|---|
所有客户的通信地址信息。 客户可能会有多个地址。例如,客户可能有一个帐单地址和一个不同的发货地址。 |
关联表 VendorAddress 将供应商映射到其地址。 Address 表也包含了 Adventure Works Cycles 雇员和客户的地址信息。 |
|
供应商雇员的姓名,Adventure Works Cycles 采购代理向这些供应商雇员订购产品。 一个供应商可能有多个联系人。例如,一个销售代理和一个销售经理。Adventure Works Cycles 采购代理可能将销售代理作为客户的主要联系人,将销售经理作为第二联系人。 |
关联表 VendorContact 将联系人映射到供应商。 AdditionalContactInfo 列包含了联系人特有的数据,例如,其他联系方式(手机、传真等)。该列中的数据为 xml 数据类型。有关详细信息,请参阅关于 Contact.AdditionalContactInfo xml 列。 |
|
将供应商映射到其提供的产品。 一种产品可能由多个供应商提供,一个供应商也可能提供多种产品。 |
|
|
采购订单的详细信息,例如,订购的产品、数量和单价。 |
|
|
采购订单的摘要信息,例如,应付款总计、订购日期和订单状态。 |
PurchaseOrderHeader 表与 PurchaseOrderDetail 表共同构成主-从关系。 |
|
用于维护产品标准发货方法的查找表。 |
ShipMethodID 列包含在 PurchaseOrderHeader 表中。 |
|
供应商的详细信息,例如,供应商的名称和帐号。 |
|
|
将客户链接到 Address 表中的地址信息。 |
按类型对地址进行分类,例如,开票地址、家庭住址、发货地址等等。AddressTypeID 列映射到 AddressType 表中。 |
|
所有客户的通信地址信息。 客户可能会有多个地址。例如,客户可能有一个帐单地址和一个不同的发货地址。 |
这是一个关联表。请参阅 Contact 和 Vendor 表。 |
示例
可以使用以下查询来查看采购和供应商数据,并熟悉采购和供应商表关系。
A. 按位置查看供应商
下面的示例列出供应商及其地址。
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. 查看供应商提供的产品
下面的示例列出供应商向 Adventure Works Cycles 提供的产品。
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. 按供应商查看供应商联系人
下面的示例列出供应商的联系人。供应商联系人是供应商的雇员,Adventure Works Cycles 采购部门的雇员与这些供应商联系人联系以订购零件和产品。
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. 按供应商查看采购
下面的示例显示了供应商及其相关的采购订单。
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