首页 > 解决方案 > 使用内部联接进行查询,仅使用对象资源管理器和 sp_help 不使用图表

问题描述

我知道这很容易,但我已经以不同的方式尝试过。我正在使用 AdventureWorks2008R2 数据库,我需要从所有已售产品 (Product) 和客户 (Customer) 的所有订单 (SalesOrderHeader) 中获取 Salesorderid、Orderdate、orderqty、name、firstname、lastname

  1. 第一个我看到了我的错误但决定重新开始
    Select OrderDate,OrderQty,FirstName,LastName,Name,soh.SalesOrderID
    from Sales.SalesOrderHeader soh
    Inner Join Sales.SalesOrderDetail sod on soh.SalesOrderID = soh.SalesOrderID
    Inner Join Sales.Customer sc on soh.CustomerID = sc.CustomerID
    Inner Join  Person.Person pp on soh.PersonID = pp.PersonID   <-- My mistake 
    Inner Join Purchasing.ProductVendor ppv on pp.BusinessEntityID = ppv.BusinessEntityID
    inner join Production.Product ppr on ppv.ProductID = ppr.ProductID
  1. 我做了这个,但它什么也没显示
    Select OrderDate,OrderQty,FirstName,LastName,Name,soh.SalesOrderID
    From Person.BusinessEntity pbe
    inner join person.person pp on pbe.BusinessEntityID = pp.BusinessEntityID
    inner join sales.store ss on pbe.BusinessEntityID = ss.BusinessEntityID
    inner join sales.SalesOrderHeader soh on ss.SalesPersonID = soh.SalesPersonID
    inner join sales.Customer sc on soh.CustomerID = sc.CustomerID
    inner join sales.SalesOrderDetail ppo on  soh.SalesOrderID = ppo.SalesOrderID;

我正在使用 sphelp 方法,但我不知道您是否可以提供一些关于如何在没有图表的情况下找到每个表之间关系的提示,我正在努力解决这部分问题,我也尝试使用对象资源管理器. 例如:

在此处输入图像描述

在上图中,我的理解是Sales.SalesOrderDetail有一个名为SalesOrderId的主键,然后SalesOrderHeader有一个相同的外键,与SpecialOfferProduct相同,所以说我应该能够在SalesOrderDetail和SalesOrderHeader之间进行连接,使用 SalesOrderID 我认为这是我的主要问题,很抱歉我无法理解这一点

标签: sqlsql-server

解决方案


推荐阅读