Adventureworks 加入 sales.store 和 sales.salesorderdetail 以获取商店名称

Adventureworks joining sales.store with sales.salesorderdetail to pull in store name

我正在处理一些 adventureworks 练习查询,但遇到了一些问题。

我正在尝试从 sales.store table 中提取商店名称并将其添加到 sales.salesorderdetail table 这样我就可以看到哪个 "stores" 正在订购特定商品。

我的问题是我似乎无法找到允许我这样做的通用密钥,除非 customerid = businessentityid,我不相信它会。

我想我可以使用 person.person table 来引入它,但由于每个 businessentityid 不一定都有 "person",我认为这行不通。

有没有熟悉 adventureworks 的人帮助我?

select * 
from sales.Store
inner join sales.Customer on sales.Store.BusinessEntityID = sales.Customer.StoreID
inner join sales.SalesOrderHeader on sales.Customer.CustomerID = sales.SalesOrderHeader.CustomerID
inner join sales.SalesOrderDetail on sales.SalesOrderHeader.SalesOrderID = sales.SalesOrderDetail.SalesOrderID

要查找关系,请右键单击 SSMS 中的存储 table 并查看依赖项。结果树显示商店通过 Customer 和 SalesOrderHeader 连接到 SalesOrderDetail。

此外,这里的约束条件表明 Store.BusinessEntityID 连接到 Customer.StoreID:

ALTER TABLE [Sales].[Customer]  WITH CHECK ADD  CONSTRAINT [FK_Customer_Store_StoreID] FOREIGN KEY([StoreID])
REFERENCES [Sales].[Store] ([BusinessEntityID])
GO
select * from

(select * from sales.SalesOrderDetail where year(modifieddate)=2012 and month(modifieddate)=3) as x

left join

(select CustomerID, salesorderid from sales.SalesOrderHeader) as y

on y.SalesOrderID=x.SalesOrderID

left join 

(select StoreID, CustomerID from sales.customer) as z

on z.CustomerID=y.CustomerID

left join

(select BusinessEntityID, name from sales.store) as w

on w.BusinessEntityID=z.StoreID