Для тех, кто знаком с AdventureWorks, имеют ли эти вопросы смысл? - PullRequest
0 голосов
/ 16 мая 2019
  1. Показать название компании для 'James D.Kramer'.

  2. Показать все адреса, перечисленные для 'Modular Cycle Systems'

  3. Показать количество заказа, наименование и прейскурантную стоимость заказа, сделанного 'CustomerID 635'

Фрагменты кода:

--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]

- РАБОТАЕТ!без ограничений клиента, хотя.- Имеются в виду разные транзакции одного и того же клиента / торгового агента?

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

Ответы [ 3 ]

0 голосов
/ 17 мая 2019

По первому вопросу:

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

Лично. Персональная таблица, James's BusinessentityID - 1263, что отличается от 1264 в StoreContactTable. Вот почему у вас ничего нет. Но он является владельцем «Усовершенствованных универмагов», если вы посмотрите на SALES.vStoreWithContacts отдельно.

По второму вопросу: Ваш запрос работает нормально.

По третьему вопросу:

Клиент 645 не разместил заказ

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

ничего не вернул.

0 голосов
/ 17 мая 2019

Это полностью действительные вопросы.

Я не могу особо подчеркнуть: вас быстро идентифицируют как ценного сотрудника, если вы сможете решить проблему

В ваших ответах указано, что вы этого не сделалирешение любых проблем.

НЕ МОЖЕТ получить требуемую компанию с таким именем

и

Невозможно получить его

Если вы еще не определили реальную проблему, это означает, что вы даже не начали решать проблемы.Вы получаете 0 строк?Неправильные строки?Слишком много строк?

Одним из наиболее полезных инструментов решения проблем является , разбивая его на маленькие биты и выделяя, какой бит не работает .Например, для вашей первой проблемы:

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

Я собираюсь предположить, что «Не могу получить это» означает, что у вас нет строк.

Так что решите некоторые проблемы:

Во-первых, есть ли строки для начала?Проверьте:

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

Если есть строки, попробуйте по кусочкам условие WHERE и посмотрите, какой бит не работает:

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

Возвращает ли это что-нибудь?

0 голосов
/ 16 мая 2019

Первый вопрос: я изменил имя человека, попробуйте этот запрос

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'
...