Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Прямой запрос. Добавление пустых партий в выборку. (число прочтений - 9152 )
orakool
Junior Member
**
Отсутствует



Сообщений: 30
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Прямой запрос. Добавление пустых партий в выборку.
01. Июня 2006 :: 08:56
Печать  
Код
Выбрать все
SELECT
	Выборка.НомерСтроки НомерСтроки,
	СпрНоменклатура.ID [Номенклатура $Справочник.Номенклатура],
	СпрЕдиницы.ID as [Единица $Справочник.Единицы],
	СпрОКЕИ.Descr as Единица_Имя,
	СпрНоменклатура.Descr as Номенклатура_Имя,
	СпрНоменклатура.Code as Номенклатура_Код,
	Выборка.Партия [Партия $Документ],
	Журнал.IDDocDef as Партия_Вид,
	Выборка.ПоЗаявке ПоЗаявке,
	Выборка.РезервыВПути РезервыВПути

FROM (
	SELECT
		СтрокиЗаявки.LineNo_ НомерСтроки,
		$СтрокиЗаявки.Номенклатура Номенклатура,
		РезервыВПути.Партия Партия,
		ISNULL(Заявки.КоличествоРасходОстаток,0) ПоЗаявке,
		ISNULL(РезервыВПути.КоличествоОстаток,0) РезервыВПути
	FROM
		$ДокументСтроки.ЗаявкаПокупателя as СтрокиЗаявки

	//	ЗАПРОС ПО РЕГИСТРУ ЗАЯВОК
	LEFT JOIN $РегистрОстатки.Заявки(
		    ,
		,
		    ЗаявкаПокупателя = :ВыбЗаявка,
	 		 (Номенклатура),
		 (КоличествоРасход)
	) Заявки ON Заявки.Номенклатура = $СтрокиЗаявки.Номенклатура

	//	ЗАПРОС ПО РЕЗЕРВАМ В ПУТИ
	LEFT JOIN $РегистрОстатки.РезервыТМЦВПути(
		    ,
		,
		    ЗаявкаПокупателя = :ВыбЗаявка,
		    (Номенклатура, Партия),
		  (Количество)
	) РезервыВПути ON РезервыВПути.Номенклатура = $СтрокиЗаявки.Номенклатура

	WHERE
		СтрокиЗаявки.IDDoc = :ВыбЗаявка
) Выборка

INNER JOIN
	$Справочник.Номенклатура as СпрНоменклатура (nolock)
		 ON СпрНоменклатура.ID = Выборка.Номенклатура
		AND $СпрНоменклатура.ВидНоменклатуры = :ВидТовара
LEFT JOIN
	$Справочник.Единицы as СпрЕдиницы (nolock) ON СпрЕдиницы.ID = $СпрНоменклатура.БазоваяЕдиница
LEFT JOIN
	$Справочник.ОКЕИ as СпрОКЕИ (nolock) ON СпрОКЕИ.ID = $СпрЕдиницы.ОКЕИ
LEFT JOIN
	_1Sjourn as Журнал (nolock) ON Журнал.IDDoc = Выборка.Партия
ORDER BY
	Выборка.НомерСтроки
 


В результате получается:
строка1: Номенклатура1, 30 (ПоЗаявке), Партия1, 24 (РезервыВПути)
Как можно получить еще одну строку вида:
строка2: Номенклатура1, 30 (ПоЗаявке), NULL, 6 (30-24)  ?
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Прямой запрос. Добавление пустых партий в выбо
Ответ #1 - 01. Июня 2006 :: 09:09
Печать  
orakool писал(а) 01. Июня 2006 :: 08:56:
В результате получается:
строка1: Номенклатура1, 30 (ПоЗаявке), Партия1, 24 (РезервыВПути)
Как можно получить еще одну строку вида:
строка2: Номенклатура1, 30 (ПоЗаявке), NULL, 6 (30-24)  ?


если честно почти ничего не понял, особо - вот это  Ужас

тебе нужно добавить итоги?
  
Наверх
 
IP записан
 
orakool
Junior Member
**
Отсутствует



Сообщений: 30
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Прямой запрос. Добавление пустых партий в выбо
Ответ #2 - 01. Июня 2006 :: 09:14
Печать  
Нужно по каждой номенлатурной позиции получить дополнительно еще одну строку с количеством номенклатуры, которое не обеспечено резервами в пути.
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Прямой запрос. Добавление пустых партий в выбо
Ответ #3 - 01. Июня 2006 :: 09:27
Печать  
Обязательно дополнительную строку? Дополнительная колонка не пойдет?

Тогда так:
1) полученный результат помещаешь во временную таблицу на сервере #temp
2) #temp объединяешь с самой собой (union)
select <перечень полей> from #temp
union all
select <перечень полей с вычислением твоего не обеспеченного резерва> from #temp where <фильтр тех строк, где нету этого резерва>
объединенный результат сортируешь так как тебе надо
  
Наверх
 
IP записан
 
orakool
Junior Member
**
Отсутствует



Сообщений: 30
Зарегистрирован: 01. Июня 2006
Пол: Мужской
Re: Прямой запрос. Добавление пустых партий в выбо
Ответ #4 - 01. Июня 2006 :: 09:31
Печать  
Понятно. Спасибо  Улыбка
Надеялся обойтись без временной таблицы.
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


1С++ любитель

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Прямой запрос. Добавление пустых партий в выбо
Ответ #5 - 01. Июня 2006 :: 09:35
Печать  
orakool писал(а) 01. Июня 2006 :: 09:31:
Понятно. Спасибо  Улыбка
Надеялся обойтись без временной таблицы.


Можно и обойтись без временной таблицы - объединить запрос сам с собой, но я не уверен, что он не отработает 2 раза, что не есть оптимально, временная таблица нужна, потому как она статична и выборка в ней уже ограничена
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать