Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Помогите увидеть ошибку в запросе (число прочтений - 29379 )
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Помогите увидеть ошибку в запросе
01. Июня 2006 :: 07:39
Печать  
Сократила запрос до минимума, но анализатор выдает ошибку
Цитата:
Server: Msg 156, Level 15, State 1, Line 30
Incorrect syntax near the keyword 'ON'.

Нерешительный
Текст запроса:
Код
Выбрать все
SELECT
	ТЧД0.LINENO_ as НомСтр,
	ТЧД0.sp4750 as [Товар $Справочник],
	ТЧД0.sp4748 as [СН $Справочник],
	ТЧД0.sp4874 as Требуется,
	IsNull(Рег.КоличествоОстаток,0) as Остаток

FROM
		dt4752 as ТЧД0 (NOLOCK)  

LEFT JOIN
	(SELECT Рег.sp4826 as  КоличествоОстаток,
		Рег.sp4823 as [Товар $Справочник],
		Рег.sp4825 as [СН $Справочник]
    FROM rg4827  as Рег  (NOLOCK)
    where  
		Рег.Period = '20060301Z'
		and Рег.sp4824 = '  BY' + '   1TO   '
		and (Рег.sp4823 in
					(select ТЧД.sp4750
					FROM dt4752 as ТЧД (NOLOCK)
			 where ТЧД.IDDOC = '  G0TZADB')
			)
		and (Рег.sp4825 in
					(select ТЧД.sp4748
					FROM dt4752 as ТЧД (NOLOCK)
			 where ТЧД.IDDOC = '  G0TZADB')
			)							  
    )
ON  ((Рег.sp4823 = ТЧД0.sp4750) and (Рег.sp4825 = ТЧД0.sp4748))

where (ТЧД0.IDDOC = '  G0TZADB')
order by НомСтр
 



Я ошибку не вижу в упор. Помогите, люди добрые  Плачущий
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите увидеть ошибку в запросе
Ответ #1 - 01. Июня 2006 :: 07:42
Печать  
со скобками перемудрила по моему
Код
Выбрать все
SELECT
ТЧД0.LINENO_ as НомСтр,
ТЧД0.sp4750 as [Товар $Справочник],
ТЧД0.sp4748 as [СН $Справочник],
ТЧД0.sp4874 as Требуется,
IsNull(Рег.КоличествоОстаток,0) as Остаток

FROM dt4752 as ТЧД0 (NOLOCK)  
LEFT JOIN rg4827  as Рег  (NOLOCK) ON  (Рег.sp4823 = ТЧД0.sp4750) and (Рег.sp4825 = ТЧД0.sp4748)

where ТЧД0.IDDOC = '  G0TZADB'
order by НомСтр
  



даже не со скобками, а с вложенным селектом - на кой он тут?
  
Наверх
 
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите увидеть ошибку в запросе
Ответ #2 - 01. Июня 2006 :: 07:43
Печать  
ты не дала алиас селекту, который пытаешься приджионить, т.е. вместо:
FROM rg4827  as Рег  (NOLOCK) )
попробуй:
FROM rg4827)  as Рег

упс, не полностью прочитал текст запроса, оно те правильно ругается, оно не знает шо такое Рег, думаю мысль понятна, эту мысль, пока я ответ рисовал и пред. оратор высказал...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Quan
1c++ donor
1c++ power user
Отсутствует


I'm old, bald and ugly.

Сообщений: 273
Местоположение: Новосибирск -- Москва
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Помогите увидеть ошибку в запросе
Ответ #3 - 01. Июня 2006 :: 07:44
Печать  
DrACe писал(а) 01. Июня 2006 :: 07:42:
со скобками перемудрила по моему

Скобки не мешают, но ответ правильный.
LEFT JOIN rg4827 as Рег
  

А для тех, кто не хотел учить SQL, господь сотворил курсоры
Наверх
 
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Помогите увидеть ошибку в запросе
Ответ #4 - 01. Июня 2006 :: 07:45
Печать  
Ребята, я в первом сообщении немного изменила текст запроса. Посмотрите, плиз. Я понимаю, что со скобками что-то не то, но как их расставить правильно?
  
Наверх
ICQ  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Помогите увидеть ошибку в запросе
Ответ #5 - 01. Июня 2006 :: 07:49
Печать  
2 DrACe

Первоначальный вариант запроса я получила из того, который в первом посте сейчас - я  их все упрощала и упрощала в попытке найти глючное место.
Смысл - выбрать остатки из регистра и приджойнить их к выборке из табличной части. На регистр отстатков наложить фильт опять таки по табличной части. вот....

Боюсь, что я вас всех несколько запутала, прошу прощения.  Смущённый
  
Наверх
ICQ  
IP записан
 
tav13
1c++ donor
Отсутствует



Сообщений: 108
Местоположение: Donetsk
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Помогите увидеть ошибку в запросе
Ответ #6 - 01. Июня 2006 :: 07:50
Печать  
  ) "укажи алиас (as Рег)"
ON  ((Рег.sp4823
  
Наверх
ICQ  
IP записан
 
DrACe
1c++ donor
1c++ power user
Отсутствует


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

Сообщений: 447
Местоположение: г. Новосибирск
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите увидеть ошибку в запросе
Ответ #7 - 01. Июня 2006 :: 07:50
Печать  
Bess_Tolkovaia писал(а) 01. Июня 2006 :: 07:45:
Ребята, я в первом сообщении немного изменила текст запроса. Посмотрите, плиз. Я понимаю, что со скобками что-то не то, но как их расставить правильно?


ну тогда мой верхний запрос конечно ни к селу, ни к городу - он первому варианту относится, который ты без следа потерла, теперь раз есть подзапрос, то сделай к нему алиас, как сказал Славко
  
Наверх
 
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Помогите увидеть ошибку в запросе
Ответ #8 - 01. Июня 2006 :: 07:53
Печать  
То есть все-таки второй селект нужен?
Сейчас попробую.
что-то я сегодня совсем тормоз.... Смущённый
  
Наверх
ICQ  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Помогите увидеть ошибку в запросе
Ответ #9 - 01. Июня 2006 :: 08:03
Печать  
Фигня какая-то получается. Может, меня пристрелить лучше из жалости? Печаль

Сделала так:
Код
Выбрать все
SELECT
ТЧД0.LINENO_ as НомСтр,
$ТЧД0.Товар as [Товар $Справочник],
$ТЧД0.СН as [СН $Справочник],
$ТЧД0.Количество as Требуется,
IsNull(Рег.КоличествоОстаток,0) as Остаток
FROM
$ДокументСтроки.Талон as ТЧД0 (NOLOCK)
LEFT JOIN
	(SELECT $Рег0.Количество as  КоличествоОстаток,
		$Рег0.Товар as [Товар $Справочник],
		$Рег0.СН as [СН $Справочник]
	  FROM $РегистрИтоги.ОстаткиСклад  as Рег0 (NOLOCK)
	 where   Рег0.Period = :ДатаСост~
	and ($Рег0.Склад = $ВидСправочника36.МестаХранения + :СкладДока)
	and ($Рег0.Товар in
		(select $ТЧД1.Товар
		FROM $ДокументСтроки.Талон as ТЧД1 (NOLOCK)
			 where ТЧД1.IDDOC = :ТекДок)
		)
	and ($Рег0.СН in
			(select $ТЧД2.СН
		FROM $ДокументСтроки.Талон as ТЧД2 (NOLOCK)
		where ТЧД2.IDDOC = :ТекДок)
		)

   ) as Рег
ON  ($Рег.Товар = $ТЧД0.Товар) and ($Рег.СН = $ТЧД0.СН)

where (ТЧД0.IDDOC = :ТекДок)
order by НомСтр
 



и получила :
Цитата:
Meta name parser error: неизвестное метаимя или алиас "$Рег"

Плачущий
  
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите увидеть ошибку в запросе
Ответ #10 - 01. Июня 2006 :: 08:11
Печать  
1. убери типизацию в подзапросе, она там ни к чему
2. как и рассказал тебе парсер поубирай $ в болке selecta и дай ВТ $РегистрИтоги, хм, а шо это ваще такое? это шото из ночных сборок? я про $РегистрИтоги... а так я о том что дай этой выборке др. алиас, отличный от Рег...
3. ща я почитаю шо ты хочешь сделать, может просто подскажу др. алгоритм...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите увидеть ошибку в запросе
Ответ #11 - 01. Июня 2006 :: 08:14
Печать  
Bess_Tolkovaia писал(а) 01. Июня 2006 :: 07:49:
2 DrACe

Первоначальный вариант запроса я получила из того, который в первом посте сейчас - я  их все упрощала и упрощала в попытке найти глючное место.
Смысл - выбрать остатки из регистра и приджойнить их к выборке из табличной части. На регистр отстатков наложить фильт опять таки по табличной части. вот....

Боюсь, что я вас всех несколько запутала, прошу прощения.  Смущённый

я бы подзапросом сделал все таки "фильтр" по ТЧ дока, и получал остаки потом согласно фильтру, я так понимаю тебе нужно получить остатки по тем товарам, которые есть в доке?
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Помогите увидеть ошибку в запросе
Ответ #12 - 01. Июня 2006 :: 08:14
Печать  
Цитата:
$РегистрИтоги, хм, а шо это ваще такое? это шото из ночных сборок?
это метаимя таблицы итогов регистра rgXXX
существует с момента появления метапарсера
  

1&&2&&3
Наверх
 
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Помогите увидеть ошибку в запросе
Ответ #13 - 01. Июня 2006 :: 08:17
Печать  
2 Славко
Я тут хочу получить актуальные отстатки. Чтоб не через ВТ. Чтоб быстрее было. Через ВТ, когда док. проводится задним числом, у меня все чудненько получается.

РегистрИтоги - это не ВТ

Цитата:
Как известно регистр остатков состоит из 2х таблиц: Итоги и Движения. В таблице итогов хранятся остатки на ТА и конец каждого месяца (или другой период, как установлено в Операции > Управление оперативными итогами > Периодичность сохранения остатков. Для больших регистров не рекомендуется уменьшать это значение). В таблице движений хранятся соответственно движения за весь период.

Для работы с этими таблицами в 1С++ для них есть свои имена
$Регистр.ХХХ – таблица движений регистра ХХХ
$РегистрИтоги.ХХХ – таблица итогов регистра ХХХ

  
Наверх
ICQ  
IP записан
 
Bess_Tolkovaia
Junior Member
**
Отсутствует


Натуральная блондинка,
1 штука

Сообщений: 89
Местоположение: Минск, РБ
Зарегистрирован: 26. Мая 2006
Пол: Женский
Re: Помогите увидеть ошибку в запросе
Ответ #14 - 01. Июня 2006 :: 08:19
Печать  
Цитата:
я бы подзапросом сделал все таки "фильтр" по ТЧ дока, и получал остаки потом согласно фильтру, я так понимаю тебе нужно получить остатки по тем товарам, которые есть в доке?


Ну да, ты правильно понял.
Я и пытаюсь фильтр сделать по ТЧ дока, но чего-то не так делаю...
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать