Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Подскажите, где ошибка в запросе? (число прочтений - 2754 )
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Подскажите, где ошибка в запросе?
21. Июля 2008 :: 12:50
Печать  
База DBF. Пользовался обработкой "Просмотр регистров без ВТ.ert"
Код
Выбрать все
SELECT
		VT.Товар as [Товар_1c_type_Справочник_Номенклатура],
		VT.Склад as [Склад_1c_type_Справочник_МестаХранения],
		VT.ДокДвиж as [ДокДвиж_1c_type_Документ],
		MAX(VT.ДокДвиж_вид) as ДокДвиж_вид,
		Sum(VT.ОстатокТовараНачальныйОстаток) as ОстатокТовараНачальныйОстаток,
		Sum(VT.ОстатокТовараПриход) as ОстатокТовараПриход,
		Sum(VT.ОстатокТовараРасход) as ОстатокТовараРасход,
		Sum(ОстатокТовараНачальныйОстаток) + Sum(ОстатокТовараПриход) - Sum(ОстатокТовараРасход) as ОстатокТовараКонечныйОстаток,
		GROUPING(Товар) as ИтогПоТовар,
		GROUPING(Склад) as ИтогПоСклад,
		GROUPING(ДокДвиж) as ИтогПоДокДвиж
FROM (
		SELECT
			РегИтоги.sp101 as Товар,
			РегИтоги.sp102 as Склад,
			'' as ДокДвиж,
			'' as ДокДвиж_вид,
			РегИтоги.sp102 as ОстатокТовараНачальныйОстаток,
			0 as ОстатокТовараПриход,
			0 as ОстатокТовараРасход,
			РегИтоги.sp102 as ОстатокТовараКонечныйОстаток
		FROM
			rg99 as РегИтоги
		WHERE
			РегИтоги.PERIOD = {d '2008-06-01'}
			AND (1=0 OR РегИтоги.sp102<>0)
 AND РегИтоги.sp101 IN (SELECT Val FROM c9625de0-96a3-45eb-af4f-07243bb48d05)

		UNION ALL

		SELECT
			РегДвиж.sp101,
			РегДвиж.sp100,
			РегДвиж.IDDoc as ДокДвиж,
			J.IDDocDef as ДокДвиж_вид,
			РегДвиж.sp102*(1-регДвиж.DEBKRED*2),
			0,
			0,
			РегДвиж.sp102*(1-регДвиж.DEBKRED*2)
		FROM
			ra99 as РегДвиж
		INNER
			JOIN 1SJourn as J ON РегДвиж.IDDOC=J.IDDOC
		WHERE
			(J.DATE >= {d '2008-07-01'}) AND (J.DATE <= {d '2008-06-01'})
 AND РегДвиж.sp101 IN (SELECT Val FROM c9625de0-96a3-45eb-af4f-07243bb48d05)

		UNION ALL

		SELECT
			РегПрихРасх.sp101 as Товар,
			РегПрихРасх.sp100 as Склад,
			РегПрихРасх.IDDoc as ДокДвиж,
			J.IDDocDef as ДокДвиж_вид,
			0 as ОстатокТовараНачальныйОстаток,
			(1-РегПрихРасх.DEBKRED)*РегПрихРасх.sp102 as ОстатокТовараПриход,
			РегПрихРасх.DEBKRED*РегПрихРасх.sp102 as ОстатокТовараРасход,
			0 as ОстатокТовараКонечныйОстаток
		FROM
			ra99 as РегПрихРасх
		INNER
			JOIN 1SJourn as J ON РегПрихРасх.IDDOC=J.IDDOC
		WHERE
			(J.DATE >= {d '2008-06-01'}) AND (J.DATE <= {d '2008-06-16'})
 AND РегПрихРасх.sp101 IN (SELECT Val FROM c9625de0-96a3-45eb-af4f-07243bb48d05)
) as VT
GROUP BY
		VT.Товар,VT.Склад,VT.ДокДвиж WITH ROLLUP

ТЗ = глЗапрос.ВыполнитьИнструкцию(глТекст);
{D:\CURRENT_DBF\EXTFORMS\ОСТАТКИТОВАРОВ.ERT(762)}: FAILED! ICommandText::Execute(): Command contains unrecognized phrase/keyword. 

  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #1 - 21. Июля 2008 :: 12:55
Печать  
Фокс, на сколько я помню, не знает что такое "WITH ROLLUP"
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #2 - 21. Июля 2008 :: 12:59
Печать  
Т.е. я не смогу воспользоваться GROUPING() ... WITH ROLLUP?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #3 - 21. Июля 2008 :: 13:03
Печать  
не сможешь
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #4 - 21. Июля 2008 :: 13:07
Печать  
Спасибо.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #5 - 21. Июля 2008 :: 13:09
Печать  
Если сильно нужен РОЛЛАП, то делай так: выполни запрос и выгрузи его в ИТЗ. А там делай "Группировать(стрГруппировки, стрКолонкиСумм, 1)".
Не забывай в строках группировки про "*"
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #6 - 23. Июля 2008 :: 19:41
Печать  
Что не так в этом запросе???
Код
Выбрать все
SELECT
		СпрКонтр.ID as [Клиент_1c_type_Справочник_Контрагенты]
,	СпрНом.ID as [Товар_1c_type_Справочник_Номенклатура]
,	РегПрод.Количество as Продажи
FROM
(
		SELECT
			ID
		FROM
			sc84
		WHERE
			ID IN (SELECT Val FROM 87932613-bed5-4d8d-ba8f-b5610b83b25c)
) СпрНом
,
(
		SELECT
			ID
		FROM
			sc172
		WHERE
			ID IN (SELECT Val FROM 9ec3c780-8ebf-4a22-814b-24c72b992f00)
) СпрКонтр
LEFT JOIN
(
		SELECT
			РегПрод.sp2343 as Номенклатура
		,	РегПрод.sp2344 as Покупатель
		,	РегПрод.sp2375 as Количество
		FROM
			ra2351 as РегПрод
		INNER JOIN
			1SJOURN as Ж
		ON
			РегПрод.IDDOC = Ж.IDDOC
		WHERE
			(Ж.DATE >= {d '2007-06-01'}) AND (Ж.DATE <= {d '2007-06-30'})
) РегПрод
ON
	 (СпрКонтр.ID = РегПрод.Покупатель) AND (СпрНом.ID = РегПрод.Номенклатура)
ТЗ = глЗапрос.ВыполнитьИнструкцию(глТекст);
{K:\NEWEDIGO\EXTFORMS\ЗАПРОСАНАЛИЗАПРОДАЖ.ERT(117)}: FAILED! ICommandText::Execute(): SQL: Column '     ' is not found. 



Или ФОКС LEFT JOIN не понимает?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #7 - 23. Июля 2008 :: 23:56
Печать  
Очень интересный запрос, такого еще не видел
Цель к-к-какая???
Думаю тут дело не в лефт джойн
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #8 - 24. Июля 2008 :: 04:16
Печать  
Цитата:
Очень интересный запрос, такого еще не видел
Цель к-к-какая???
Думаю тут дело не в лефт джойн

Запрос как запрос. Декартово произведение справочников Номенклатуры и контрагентов. Цепляю к ним продажи. Конечно надо бы еще РегПрод.Количество заменить на что-то вроде ISNULL(РегПрод.Количество,0)
А цель получить все комбинации товаров и клиентов (+ продажи). Зачем? Запрос будет за несколько периодов. В одном периоде нет продаж по товару, в другом есть. Чтобы не морочиться, куда воткнуть товар согласно иерархии, построю все товары и буду вставлять куда-надо продажи.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #9 - 24. Июля 2008 :: 05:46
Печать  
А так прокатит:
Код
Выбрать все
SELECT
		СпрКонтр.ID as [Клиент_1c_type_Справочник_Контрагенты]
,	СпрНом.ID as [Товар_1c_type_Справочник_Номенклатура]
,	РегПрод.Количество as Продажи
FROM
(
		SELECT
			ID
		FROM
			sc84
		WHERE
			ID IN (SELECT Val FROM 87932613-bed5-4d8d-ba8f-b5610b83b25c)
) as СпрНом
,
(
		SELECT
			ID
		FROM
			sc172
		WHERE
			ID IN (SELECT Val FROM 9ec3c780-8ebf-4a22-814b-24c72b992f00)
) as СпрКонтр
LEFT JOIN
(
		SELECT
			РегПрод.sp2343 as Номенклатура
		,	РегПрод.sp2344 as Покупатель
		,	РегПрод.sp2375 as Количество
		FROM
			ra2351 as РегПрод
		INNER JOIN
			1SJOURN as Ж
		ON
			РегПрод.IDDOC = Ж.IDDOC
		WHERE
			(Ж.DATE >= {d '2007-06-01'}) AND (Ж.DATE <= {d '2007-06-30'})
) as РегПрод
ON
	 (СпрКонтр.ID = РегПрод.Покупатель) AND (СпрНом.ID = РегПрод.Номенклатура) 


?
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #10 - 24. Июля 2008 :: 12:24
Печать  
Не работает. Та же ошибка.
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Подскажите, где ошибка в запросе?
Ответ #11 - 24. Июля 2008 :: 17:01
Печать  
Что-то меня сейчас стукнуло по голове и я кое-что вспомнил и переписал запрос.  Класс
Вот рабочий вариант:
Код
Выбрать все
SELECT
	З.Клиент as [Клиент_1c_type_Справочник_Контрагенты]
,	З.Товар as [Товар_1c_type_Справочник_Номенклатура]
,	РегПрод.Количество as Продажи
FROM
(
		SELECT
			СпрКонтр.ID as Клиент
		,	СпрНом.ID as Товар
		FROM
			(
				SELECT
					ID
				FROM
					sc172
				WHERE
					ID IN (SELECT Val FROM ca4701d6-a296-4f84-b5dd-f64d0193d952) AND IsFolder = 2
			) as СпрКонтр
		,
			(
				SELECT
					ID
				FROM
					sc84
				WHERE
					ID IN (SELECT Val FROM 76d9d19f-63e5-47c9-85e8-7094f4eb4ad7) AND IsFolder = 2
			) as СпрНом
) as З
LEFT JOIN
(
		SELECT
			РегПрод.sp2343 as Номенклатура
		,	РегПрод.sp2344 as Покупатель
		,	РегПрод.sp2375 as Количество
		FROM
			ra2351 as РегПрод
		INNER JOIN
			1SJOURN as Ж
		ON
			РегПрод.IDDOC = Ж.IDDOC
		WHERE
			(Ж.DATE >= {d '2007-06-01'}) AND (Ж.DATE <= {d '2007-06-30'})
) РегПрод
ON
	 (З.Клиент = РегПрод.Покупатель) AND (З.Товар = РегПрод.Номенклатура) 

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