Эти вопросы имеют смысл для всех, кто знаком с AdventureWorks?

  1. Покажите название компании для «Джеймс Д. Крамер».

  2. Показать все адреса, перечисленные для «Модульные циклические системы»

  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

показать, каков ваш ожидаемый результат для каждого запроса

Sreenu131 16.05.2019 12:02

Первые вопросы во время стажировки. Не принимать никаких результатов или даже результатов NULL :/ . Мне дали именно это, и ожидается, что я буду работать с этим. А потом показать вывод. Поэтому я спрашивал, имеют ли смысл вопросы 1 и 3 для людей, знакомых с AW.

Rohan Teja 16.05.2019 12:06

Для первого вопроса SQL-запрос, который вы написали, неверен, вы должны отобразить имя компании.

Sreenu131 16.05.2019 12:10

Я не могу понять. Не могли бы вы рассказать мне, как?

Rohan Teja 16.05.2019 12:15
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
417
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

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

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'

Я знаю, что это работает, но мне это особенно нужно для Джеймса Д. Крамера. Но спасибо за след. Моя первая попытка была такой же, но я не получил никакого вывода строк.

Rohan Teja 16.05.2019 12:40

@RohanTeja Привет, вы не улавливаете мою точку зрения, если вы не получаете результат для Джеймса Д. Крамера, это означает, что у него нет совпадающих записей при объединении таблиц, из-за этого я меняюсь на «Альбертс».

Sreenu131 16.05.2019 13:06

Я понял твою мысль. Но значит ли это, что он не принадлежит ни к какой компании? Кроме того, у вас есть какие-либо идеи о том, что не так с частью 3?

Rohan Teja 16.05.2019 14:06
Ответ принят как подходящий

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

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, BusinessentityID Джеймса — 1263, что отличается от 1264 в StoreContactTable. Вот почему у тебя ничего нет. Но он является владельцем «Изысканных универмагов», если вы посмотрите на SALES.vStoreWithContacts отдельно.

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

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

Клиент 645 не размещал никаких заказов

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

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

Вы хоть представляете, как сопоставляются CustomerID и StoreID? Потому что я получаю результат с storeID, используя sales.customer и sales.store. И я получаю некоторые результаты, когда вместо этого использую StoreID в качестве фильтра. Не знаю, где я ошибаюсь, но не могу понять, почему результаты разные. Спасибо за ваш ответ, но у меня работает.

Rohan Teja 18.05.2019 04:35

@RohanTeja, когда вы используете storeID в качестве фильтра, вы получаете разные результаты, потому что многие клиенты покупают товары с этим StoreID.

Gen Wan 18.05.2019 06:34

Итак, CustomerID предназначен для продаж между конкретным магазином и магазином Adventure, а StoreID — для транзакций по перепродаже между указанным магазином другим отдельным покупателям? Спасибо за разъяснение, хотя эти вопросы кажутся мне слишком новичками.

Rohan Teja 18.05.2019 16:52

@RohanTeja Не волнуйся. Каждый эксперт когда-то был новичком. Я настоятельно рекомендую вам прочитать введение AdventureWorks. Представьте, что вы их разработчик SQL. (Это весело). Вот ссылка: docs.microsoft.com/en-us/previous-versions/sql/sql-server-20‌​08/…

Gen Wan 18.05.2019 17:13

Это абсолютно правильные вопросы.

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

Ваши ответы показывают, что вы вообще не занимались решением проблем.

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'

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

Итак, решите некоторые проблемы:

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

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

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

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

Это что-то возвращает?

Мне нравится помощь и структурированная манера вашего ответа, но нет, я уже пробовал простые запросы. Да, я получу результат для первой части, и я не пробовал вторую часть, но похоже на то, что написал Шрину; мой код работает для некоторых других имен. Я думаю, что указанное имя не имеет компании ... Но все равно спасибо, я понял вашу точку зрения.

Rohan Teja 18.05.2019 04:27

Другие вопросы по теме