Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Перемножение ответа  [new]
Pasher
Member

Откуда:
Сообщений: 34
Здравствуйте, прошу помочь,либо же направить в нужное русло.
Суть следующая есть код:SELECT distinct DailyQuestionnaire.[ID]
,DailyQuestionnaire.[ItemID]
,DailyQuestionnaire.[VisitID]
,DailyQuestionnaire.[Price]
,DailyQuestionnaire.[PriceCard]
,DailyQuestionnaire.[SalerID]
,items.ItemName
,Visits.VisitStartDate
,Addresses.AddrName
,Clients.NamePrint
,clients.ClientID
,items.EAN
--,ItemClients.ExtraCode
FROM [anthill].[dbo].[DailyQuestionnaire] left outer join Items on DailyQuestionnaire.ItemID=items.ItemID
left outer join Visits on visits.VisitID=DailyQuestionnaire.VisitID
left outer join Addresses on visits.AddrID=Addresses.AddrID
left outer join Clients on Addresses.ClientID=Clients.ClientID
left outer join ItemClients on ItemClients.ClientID=Addresses.ClientID
where Visits.VisitStartDate between '01.08.2017' and '02.08.2017' and Clients.NamePrint like 'лента'
and Addresses.AddrName like '%ильинка%'
Имеется параметр из таблицы, у него 92 строки для определенной сети ,если данный параметр закоменчен выводится таблица в 79 строк, но если данный параметр раскоментить,то выводится таблица 79*92,а хотелось бы чтоб выводилось 79(тоесть каждому ItemID = ExtraCode)
8 авг 17, 10:07    [20707315]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
Masyny23
Member

Откуда:
Сообщений: 47
Pasher,

такое может быть если 1-му ItemClients.ClientID соответствует несколько записей ItemClients.ExtraCode,
или
Addresses.ClientID соответствует несколько записей ItemClients.ClientID.
8 авг 17, 10:17    [20707347]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
Pasher
Member

Откуда:
Сообщений: 34
Masyny23,
Все соответсвует ,тоесть на каждый адрес по 92 кода(т.к. код назначается на итемы данной сети)
8 авг 17, 10:28    [20707383]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
Pasher
Member

Откуда:
Сообщений: 34
Уточню,получается что на 1-ин ItemID назначается все ExtraCode,и так на все итемы
8 авг 17, 10:34    [20707396]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Pasher,

зачем там LEFT JOIN, если условия на правые таблицы написаны в WHERE через AND?
8 авг 17, 10:36    [20707405]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
Pasher
Member

Откуда:
Сообщений: 34
iap,

Это для проверки просто,так это часть общего отчета
8 авг 17, 10:42    [20707436]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
Pasher
iap,

Это для проверки просто,так это часть общего отчета
Что для проверки?
Неявное преобразование LEFT JOIN -> INNER JOIN?
И что проверяете?
8 авг 17, 10:46    [20707462]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
Pasher
Member

Откуда:
Сообщений: 34
iap,

автор
Что для проверки?

Проверка чтоб ExtraCode был приравнен каждому итему правильно
автор
И что проверяете?

проверяю непосредственно правильность заполнения таблицы чтоб в отчете выдавалось все правильно
8 авг 17, 10:51    [20707481]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31364
Pasher
Все соответсвует ,тоесть на каждый адрес по 92 кода(т.к. код назначается на итемы данной сети)
То есть всё правильно, должно выводиться 79*92?

Или, если хочется, чтоб выводилось 79(тоесть каждому ItemID = ExtraCode), то нужно понять, какой именно ExtraCode (один!) должен быть выведен для каждого ItemID, и как это записать в условиях запроса.
8 авг 17, 10:54    [20707495]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
iiyama
Member

Откуда:
Сообщений: 642
Pasher,

1. Понять что делает оператор Distinct
2. Понять, что Ваш запрос вернет в одном случае данные с 1-го по 2-е августа, а в другом с 8-го января по 8 февраля
8 авг 17, 11:08    [20707579]     Ответить | Цитировать Сообщить модератору
 Re: Перемножение ответа  [new]
Pasher
Member

Откуда:
Сообщений: 34
Извиняюсь всех кого запутал и т.п., конечный код выглядит так(может кому пригодится):
SELECT distinct DailyQuestionnaire.[ItemID]
,DailyQuestionnaire.[ID]
,DailyQuestionnaire.[VisitID]
,DailyQuestionnaire.[Price]
,DailyQuestionnaire.[PriceCard]
,DailyQuestionnaire.[SalerID]
,items.ItemName
,Visits.VisitStartDate
,Addresses.AddrName
,Clients.NamePrint
,clients.ClientID
,items.EAN
, ItemClients.ExtraCode
FROM [anthill].[dbo].[DailyQuestionnaire] left outer join Items on DailyQuestionnaire.ItemID=items.ItemID
left outer join Visits on visits.VisitID=DailyQuestionnaire.VisitID
left outer join Addresses on visits.AddrID=Addresses.AddrID
left outer join Clients on Addresses.ClientID=Clients.ClientID
left outer join ItemClients on ItemClients.ClientID=Addresses.ClientID and ItemClients.ItemID=DailyQuestionnaire.ItemID

where Visits.VisitStartDate between '01.08.2017' and '02.08.2017' and Clients.NamePrint like 'лента'
and Addresses.AddrName like '%ильинка%'
8 авг 17, 11:55    [20707811]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить