Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Работает ли в 1С и SQL2005 выражение "LEFT OUTER JOIN" (число прочтений - 1454 )
newbas
Junior Member
**
Отсутствует



Сообщений: 32
Местоположение: Краснодар
Зарегистрирован: 29. Августа 2008
Пол: Мужской
Работает ли в 1С и SQL2005 выражение "LEFT OUTER JOIN"
23. Декабря 2010 :: 11:08
Печать  
Делаю запрос по товарам, отсутствующим на складе и в движениях:
Код
Выбрать все
ТекстЗапроса = "SELECT
	|СпрНоменклатура.ID AS [Номенклатура $Справочник.Номенклатура]
	|,РегД.КоличествоПриход as КоличествоПриход
	|,РегД.КоличествоРасход as КоличествоРасход
	|,РегД.КоличествоКонечныйОстаток as Количество
	|
	|FROM
	|	$Справочник.Номенклатура AS СпрНоменклатура With (NOLOCK)
	|
	|LEFT OUTER JOIN
	|
	|$РегистрОстаткиОбороты.ОстаткиТМЦ(:НачДата, :КонДата~,,,,,(Номенклатура), (Количество)) as РегД
	|	ON (РегД.Номенклатура = СпрНоменклатура.ID)
	|
	|WHERE
	|		(СпрНоменклатура.ISMARK = 0)
	| 	AND (СпрНоменклатура.ISFOLDER = 2)
	|
	|ORDER BY СпрНоменклатура.Descr
	|";
 


Но в возвращаемой таблице есть товары с остатком. Что я сделал не так?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Работает ли в 1С и SQL2005 выражение "LEFT OUTER JOIN"
Ответ #1 - 23. Декабря 2010 :: 11:11
Печать  
Улыбка)
А что ты хотел исключить с помощью левого соединения ?
Ты взял целиком табличку справочника и к ней присоединил строки с останками..
  
Наверх
 
IP записан
 
newbas
Junior Member
**
Отсутствует



Сообщений: 32
Местоположение: Краснодар
Зарегистрирован: 29. Августа 2008
Пол: Мужской
Re: Работает ли в 1С и SQL2005 выражение "LEFT OUTER JOIN"
Ответ #2 - 23. Декабря 2010 :: 11:37
Печать  
Цитата:
что ты хотел исключить с помощью левого соединения ?
Ты взял целиком табличку справочника и к ней присоединил строки с останками..

Согласен.
Тогда какой путь решения искомой задачи? Использовать подзапрос?

В общем сам разобрался, добавил условие
Код
Выбрать все
AND ((СпрНоменклатура.ID IS NULL) OR (РегД.Номенклатура IS NULL))
 


И все стало на свои места

  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Работает ли в 1С и SQL2005 выражение "LEFT OUTER JOIN"
Ответ #3 - 27. Декабря 2010 :: 03:57
Печать  
newbas писал(а) 23. Декабря 2010 :: 11:37:
Согласен.
Тогда какой путь решения искомой задачи? Использовать подзапрос?

В общем сам разобрался, добавил условие
Код
Выбрать все
AND ((СпрНоменклатура.ID IS NULL) OR (РегД.Номенклатура IS NULL))
 


И все стало на свои места


Достаточно просто "And РегД.Номенклатура Is Null".
"СпрНоменклатура.ID Is Null" вообще смысла не имеет, ибо джойн левый
  
Наверх
 
IP записан
 
newbas
Junior Member
**
Отсутствует



Сообщений: 32
Местоположение: Краснодар
Зарегистрирован: 29. Августа 2008
Пол: Мужской
Re: Работает ли в 1С и SQL2005 выражение "LEFT OUTER JOIN"
Ответ #4 - 27. Декабря 2010 :: 08:53
Печать  
Цитата:
Достаточно просто "And РегД.Номенклатура Is Null".
"СпрНоменклатура.ID Is Null" вообще смысла не имеет, ибо джойн левый

Согласен
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать