对于熟悉 AdventureWorks 的任何人来说,这些问题是否有意义?

To anyone who is familiar with AdventureWorks, do these questions make sense?

  1. 显示'James D.Kramer'的公司名称。

  2. 显示为 'Modular Cycle Systems'

  3. 列出的所有地址
  4. 显示'CustomerID 635'

  5. 所下订单的订单数量、名称和标价

代码片段:

--use [AdventureWorks2016CTP3]

--CAN'T get the required company with this name.
select 
    [BusinessEntityID], [FirstName], [MiddleName], [LastName] 
from 
    [Person].[Person]
where  
    [FirstName] = 'James' and 
    [MiddleName] = 'D.' and
    [LastName] = 'Kramer'



--Addresses for Modular Cycle Systems
select
    [Name], PeA.[AddressLine1] as [Address]
from 
    [Sales].[Store] as SaS
inner join 
    [Person].[BusinessEntityAddress] as PeBEA on SaS.BusinessEntityID = PeBEA.BusinessEntityID
inner join 
    [Person].[Address] as PeA on PeBEA.[AddressID] = PeA.[AddressID]
where 
    [Name] = 'Modular Cycle Systems'


--Details of CustomerID 635 - Apparently INCORRECT accorrdin to my Superior.
select 
    SaC.[CustomerID], SaSOD.[OrderQty], SaS.[Name], SaSOD.[UnitPrice] as ListPrice
from
    [Sales].[Customer] as SaC
join 
    sales.Store as SaS on SaC.StoreID = SaS.BusinessEntityID
join 
    [Sales].[SalesOrderHeader] as SaSOH on SaC.[CustomerID] = SaSOH.[CustomerID]
join 
    [Sales].[SalesOrderDetail] as SaSOD on SaSOH.SalesOrderID = SaSOD.SalesOrderID
where 
    SaC.[CustomerID] = '635'

有效的部分:

Select 
    SaC.[CustomerID], [StoreID], SaS.[Name]
from
    [Sales].[Customer] as SaC
join
    [Sales].[Store] as SaS on SaS.BusinessEntityID = SaC.StoreID
where 
    SaC.[CustomerID] = '635'


select 
    SaSOH.[SalesOrderID], SaSOH.[CustomerID], 
    SaSOD.[OrderQty], SaSOD.[UnitPrice], SaSOD.[UnitPriceDiscount] 
from
    [Sales].[SalesOrderHeader] as SaSOH
join 
    [Sales].[SalesOrderDetail] as SaSOD on SaSOH.[SalesOrderID] = SaSOD.[SalesOrderID]

--成功了!虽然没有客户限制。 --意思是同一个customer/sales代理的不同交易?

Select SaC.[CustomerID], [StoreID], SaS.[Name], 
    SaSOD.[OrderQty], SaSOD.[UnitPrice]
from [Sales].[Customer] as SaC
    Join [Sales].[Store] as SaS
        on SaS.BusinessEntityID = SaC.StoreID
    join [Sales].[SalesOrderHeader] as SaSOH
        on SaSOH.[CustomerID] = SaC.[CustomerID]
    join [Sales].[SalesOrderDetail] as SaSOD
        on SaSOH.[SalesOrderID] = SaSOD.[SalesOrderID]
where SaC.[StoreID] = '1960'
--and SaC.[CustomerID] = '635'
order by SaC.StoreID

第一个问题我改了人名,试试这个查询

SELECT st.[BusinessEntityID],st.Name AS CompanyName
       ,[FirstName]
       ,[MiddleName]
       ,[LastName]  
FROM Sales.Store st
INNER JOIN sales.Customer cu
ON cu.StoreID = st.BusinessEntityID
INNER JOIN [Person].[Person] p
on p.[BusinessEntityID] = cu.PersonID
WHERE p.[FirstName] = 'Amy' and 
    p.[MiddleName] = 'E.' and
    p.[LastName] = 'Alberts'

第一个问题:

SELECT * FROM SALES.vStoreWithContacts
where FirstName = 'James'
and MiddleName = 'D.'
and LastName = 'Kramer'

BusinessEntityID    Name                            FirstName   MiddleName  LastName
1264                Refined Department Stores       Mr. James   D.          Kramer

亲自。 Person table,James的BusinessentityID为1263,与StoreContactTable中的1264不同。这就是为什么你一无所获。但是单独看SALES.vStoreWithContacts他就是'Refined Department Stores'的主人

第二个问题:你的查询没问题。

第三题:

客户645没有下单

select * from Sales.SalesOrderHeader
where CustomerID = '635'

它什么也没返回。

它们是完全有效的问题。

我怎么强调都不为过:如果你能解决问题

,你将很快被确定为有价值的员工

您的回答表明您根本没有解决任何问题。

CAN'T get the required company with this name

Unable to get it

当你还没有定义实际问题时,就意味着你还没有开始解决问题。你得到0行吗?错误的行?行太多?

解决问题最有用的工具之一是将问题分解成小块并找出哪块不起作用。例如,对于您的第一期:

select 
    [BusinessEntityID], [FirstName], [MiddleName], [LastName] 
from 
    [Person].[Person]
where  
    [FirstName] = 'James' and 
    [MiddleName] = 'D.' and
    [LastName] = 'Kramer'

我假设 "Can't get it" 意味着你没有行。

所以做一些问题解决:

首先有什么行可以开始吗?检查:

select 
    [BusinessEntityID], [FirstName], [MiddleName], [LastName] 
from 
    [Person].[Person]

如果有行,那么只需分段尝试您的 WHERE 子句,看看哪一位失败了:

select 
    [BusinessEntityID], [FirstName], [MiddleName], [LastName] 
from 
    [Person].[Person]
where  
    [FirstName] = 'James'

这return有什么用吗?