구매 및 공급업체 시나리오
Adventure Works Cycles에서는 구매 부서가 Adventure Works Cycles 자전거 제조에 사용되는 원자재와 부품을 구매합니다. Adventure Works Cycles에서는 자전거 의류를 비롯하여 물병 및 펌프와 같은 자전거 액세서리도 구매하여 고객에게 판매합니다. 이러한 제품과 해당 공급업체에 대한 정보가 AdventureWorks 예제 데이터베이스에 저장되어 있습니다.
이 항목에서는 예제 데이터베이스에 표시되어 있는 공급업체, 주요 공급업체 관련 테이블의 스키마 다이어그램 및 공용 테이블 관계를 보여 주는 예제 쿼리에 대해 설명합니다.
Vendor 및 Purchasing 테이블
다음 표에서는 이러한 테이블에 저장되는 데이터에 대해 간략히 설명합니다.
스키마.테이블 |
포함된 내용 유형 |
설명 |
---|---|---|
모든 고객에 대한 주소 정보입니다. 고객은 둘 이상의 주소를 가질 수 있습니다. 예를 들어 고객의 요금 청구서 주소와 물건 배달 주소가 다를 수 있습니다. |
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 테이블을 참조하십시오. |
예
다음 쿼리를 사용하여 구매 및 공급업체 데이터를 확인할 수 있으며 구매 및 공급업체 테이블 관계를 살펴 볼 수 있습니다.
1. 위치별 공급업체 보기
다음 예에서는 공급업체와 해당 공급업체 주소를 나열합니다.
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
2. 공급업체별 제품 보기
다음 예에서는 공급업체가 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
3. 공급업체별 연락처 보기
다음 예에서는 공급업체 연락처를 나열합니다. 공급업체 연락처는 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
4. 공급업체별 구매 내용 보기
다음 예에서는 공급업체와 관련 구매 주문을 표시합니다.
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