Покажите название компании для «Джеймс Д. Крамер».
Показать все адреса, перечисленные для «Модульные циклические системы»
Показать количество заказа, имя и прейскурантную цену заказа, сделанного «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
Первые вопросы во время стажировки. Не принимать никаких результатов или даже результатов NULL :/ . Мне дали именно это, и ожидается, что я буду работать с этим. А потом показать вывод. Поэтому я спрашивал, имеют ли смысл вопросы 1 и 3 для людей, знакомых с AW.
Для первого вопроса SQL-запрос, который вы написали, неверен, вы должны отобразить имя компании.
Я не могу понять. Не могли бы вы рассказать мне, как?
Первый вопрос, я изменил имя человека, попробуйте этот запрос
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'
Я знаю, что это работает, но мне это особенно нужно для Джеймса Д. Крамера. Но спасибо за след. Моя первая попытка была такой же, но я не получил никакого вывода строк.
@RohanTeja Привет, вы не улавливаете мою точку зрения, если вы не получаете результат для Джеймса Д. Крамера, это означает, что у него нет совпадающих записей при объединении таблиц, из-за этого я меняюсь на «Альбертс».
Я понял твою мысль. Но значит ли это, что он не принадлежит ни к какой компании? Кроме того, у вас есть какие-либо идеи о том, что не так с частью 3?
По первому вопросу:
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 в качестве фильтра. Не знаю, где я ошибаюсь, но не могу понять, почему результаты разные. Спасибо за ваш ответ, но у меня работает.
@RohanTeja, когда вы используете storeID в качестве фильтра, вы получаете разные результаты, потому что многие клиенты покупают товары с этим StoreID.
Итак, CustomerID предназначен для продаж между конкретным магазином и магазином Adventure, а StoreID — для транзакций по перепродаже между указанным магазином другим отдельным покупателям? Спасибо за разъяснение, хотя эти вопросы кажутся мне слишком новичками.
@RohanTeja Не волнуйся. Каждый эксперт когда-то был новичком. Я настоятельно рекомендую вам прочитать введение AdventureWorks. Представьте, что вы их разработчик SQL. (Это весело). Вот ссылка: docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/…
Это абсолютно правильные вопросы.
Я не могу не подчеркнуть: вы будете быстро признаны ценным сотрудником, если сможете проблема решена
Ваши ответы показывают, что вы вообще не занимались решением проблем.
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'
Это что-то возвращает?
Мне нравится помощь и структурированная манера вашего ответа, но нет, я уже пробовал простые запросы. Да, я получу результат для первой части, и я не пробовал вторую часть, но похоже на то, что написал Шрину; мой код работает для некоторых других имен. Я думаю, что указанное имя не имеет компании ... Но все равно спасибо, я понял вашу точку зрения.
показать, каков ваш ожидаемый результат для каждого запроса