Переключение на Главную Страницу Страницы: 1 [2] 3 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Группировка "ВСЕ". Как?!! (число прочтений - 14800 )
U_zer
Экс-Участник


Re: Группировка "ВСЕ". Как?!!
Ответ #15 - 30. Марта 2007 :: 08:34
Печать  
Пост мэша правильный, за искл. вместо Номенклатура надо Товар написать, а ты какой-то бред
понагородил. Конечно нифига работать не будет.
  
Наверх
 
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #16 - 30. Марта 2007 :: 08:55
Печать  
Цитата:
Пост мэша правильный, за искл. вместо Номенклатура надо Товар написать, а ты какой-то бред
понагородил. Конечно нифига работать не будет.


первый пост (мой) я ещё кое как, интуитивно понимал. Все что было дальше - надеялся на то что кто нибудь кинет код и оно заработает. потому не удивительно что бред получился. по поводу замены Номенклатуры на Товар, не мог бы ты поточнее написать, какой именно пост был правильный и где нужно заменить? Потому как пока что для меня прямые запросы - китайский язык, все "изучается" методом "тыка". причем тыка носом в правильный код  Печаль
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #17 - 30. Марта 2007 :: 09:01
Печать  
Перед РегИтоги в cast() знак $ убери
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #18 - 30. Марта 2007 :: 09:08
Печать  
mash писал(а) 30. Марта 2007 :: 09:01:
Перед РегИтоги в cast() знак $ убери


убрал

пишет  FAILED! ICommandText::Execute(): Syntax error.
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #19 - 30. Марта 2007 :: 09:44
Печать  
Да. Виртуальные таблицы только SQL. Жаль. Красиво моглдо бы получится Печаль
Тогда код принимает вид:
Код
Выбрать все
SELECT
	НоменклатураГруппа.id as [Товар_Группа $Справочник.Номенклатура],
	Номенклатура.id as [Товар $Справочник.Номенклатура],
	SUM(cast($РегИтоги.ОстатокТовара as numeric(10,2))) as ОстатокТовараКонечныйОстаток
FROM
	$Справочник.Номенклатура as Номенклатура
		left join
	$Справочник.Номенклатура as НоменклатураГруппа
			on Номенклатура.parentid = НоменклатураГруппа.id
		left join
	$РегистрИтоги.ОстаткиТоваров as РегИтоги
			on РегИтоги.Товар = Номенклатура.id
WHERE
	РегИтоги.PERIOD = :ДатаПериодаОстатков~~
		AND
	$РегИтоги.Фирма = $ПустойИД
	     and
	Номенклатура.id  IN (SELECT Val FROM :ВременнаяТаблица)
	     and
	$РегИтоги.Склад  IN (SELECT Val FROM :ВременнаяТаблица2)
GROUP BY
	Номенклатура.id,НоменклатураГруппа.id
 


  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #20 - 30. Марта 2007 :: 12:19
Печать  
Вроде spock говорил, что Адвантаж ОЛЕДБ провайдер позволяет виртуальные таблицы Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #21 - 30. Марта 2007 :: 13:57
Печать  
пробовал этот код
Код
Выбрать все
SELECT
	НоменклатураГруппа.id as [Товар_Группа $Справочник.Номенклатура],
	Номенклатура.id as [Товар $Справочник.Номенклатура],
	SUM(cast($РегИтоги.ОстатокТовара as numeric(10,2))) as ОстатокТовараКонечныйОстаток
FROM
	$Справочник.Номенклатура as Номенклатура
		left join
	$Справочник.Номенклатура as НоменклатураГруппа
			on Номенклатура.parentid = НоменклатураГруппа.id
		left join
	$РегистрИтоги.ОстаткиТоваров as РегИтоги
			on РегИтоги.Товар = Номенклатура.id
WHERE
	РегИтоги.PERIOD = :ДатаПериодаОстатков~~
		AND
	$РегИтоги.Фирма = $ПустойИД
	     and
	Номенклатура.id  IN (SELECT Val FROM :ВременнаяТаблица)
	     and
	$РегИтоги.Склад  IN (SELECT Val FROM :ВременнаяТаблица2)
GROUP BY
	Номенклатура.id,НоменклатураГруппа 



и все равно ругается

FAILED! ICommandText::Execute(): SQL: Column 'ТОВАР' is not found.


неужели никто не делал похожую задачу на ДБФ?
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #22 - 30. Марта 2007 :: 15:17
Печать  
ну во-первых перед РегИтоги.Товар поставь $
во-вторых, он у тебя точно называется "Товар" может "Номенклатура"? Тогда $РегИтоги.Номенклатура
  
Наверх
 
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #23 - 31. Марта 2007 :: 11:13
Печать  
вроде заработало. всем спасибо.
но если выбрать склад, на котором нет остатков, то тз пустая!!!
как все таки сделать что б выводило ВСЕ товары?
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #24 - 02. Апреля 2007 :: 06:45
Печать  
Вот такой запрос
Код
Выбрать все
SELECT
	НоменклатураГруппа.id as [Товар_Группа $Справочник.Номенклатура],
	Номенклатура.id as [Товар $Справочник.Номенклатура],
	SUM(cast($РегИтоги.ОстатокТовара as numeric(10,2))) as ОстатокТовараКонечныйОстаток
FROM
	$Справочник.Номенклатура as Номенклатура
		left join
	$Справочник.Номенклатура as НоменклатураГруппа
			on Номенклатура.parentid = НоменклатураГруппа.id
		left join
	$РегистрИтоги.ОстаткиТоваров as РегИтоги
			on
                РегИтоги.Товар = Номенклатура.id
	                and
	$РегИтоги.Склад  IN (SELECT Val FROM :ВременнаяТаблица2)
                                and
	РегИтоги.PERIOD = :ДатаПериодаОстатков~~
		AND
	$РегИтоги.Фирма = $ПустойИД

WHERE
	Номенклатура.id  IN (SELECT Val FROM :ВременнаяТаблица)
GROUP BY
	Номенклатура.id,НоменклатураГруппа
 

  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #25 - 02. Апреля 2007 :: 07:09
Печать  
попробовал. учел замечание  JohnyDeath, по поводу $ перед РегИтоги.Товар, добавил вывод в ТЗ код номенклатуры (это мне для задачи нужно). получился такой код:
Код
Выбрать все
текстЗапроса = "
|SELECT
|	НоменклатураГруппа.id as [Товар_Группа $Справочник.Номенклатура],
|	Номенклатура.id as [Товар $Справочник.Номенклатура],
|   Номенклатура.Code as Код,
|	SUM(cast($РегИтоги.ОстатокТовара as numeric(10,2))) as ОстатокТовараКонечныйОстаток
|FROM
|	$Справочник.Номенклатура as Номенклатура
|		left join
|	$Справочник.Номенклатура as НоменклатураГруппа
|			on Номенклатура.parentid = НоменклатураГруппа.id
|		left join
|	$РегистрИтоги.ОстаткиТоваров as РегИтоги
|			on $РегИтоги.Товар = Номенклатура.id
|			    and
|	$РегИтоги.Склад  IN (SELECT Val FROM :ВременнаяТаблица2)
|					  and
|	РегИтоги.PERIOD = :ДатаПериодаОстатков~~
|		AND
|	$РегИтоги.Фирма = $ПустойИД
|
|WHERE
|	Номенклатура.id  IN (SELECT Val FROM :ВременнаяТаблица)
|GROUP BY
|	Номенклатура.id,НоменклатураГруппа.id,Номенклатура.Code
|";

 




при запуске получил следующее:

FAILED! ICommandText::Execute(): SQL: Queries of this type are not supported.


понимаю что достал, наверное, всех уже изрядно. но просто уже обидно не довести до конца.
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
mash
1c++ donor
Отсутствует


1C++ v. 3.0.1.23

Сообщений: 148
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #26 - 02. Апреля 2007 :: 09:11
Печать  
Тут мало у кого DBF, поэтому специфики OLEDB мы не знаем, запрос скорее всего такой пойдет :
[code]
SELECT
     НоменклатураГруппа.id as [Товар_Группа $Справочник.Номенклатура],
     Номенклатура.id as [Товар $Справочник.Номенклатура],
     SUM(cast($РегИтоги.ОстатокТовара as numeric(10,2))) as ОстатокТовараКонечныйОстаток
FROM
     $Справочник.Номенклатура as Номенклатура
           left join
     $Справочник.Номенклатура as НоменклатураГруппа
                 on Номенклатура.parentid = НоменклатураГруппа.id
           left join
     (
     select
           $Рег.Товар as Товар
     from
           $РегистрИтоги.ОстаткиТоваров as Рег
     where
           $Рег.Склад  IN (SELECT Val FROM :ВременнаяТаблица2)
             and      
           Рег.PERIOD = :ДатаПериодаОстатков~~
                 AND
           $Рег.Фирма = $ПустойИД
     ) as РегИтоги
           on РегИтоги.Товар = Номенклатура.id
WHERE
     Номенклатура.id  IN (SELECT Val FROM :ВременнаяТаблица)
GROUP BY
     Номенклатура.id,НоменклатураГруппа
[/code]
  

Поспешность наносит ущерб
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #27 - 02. Апреля 2007 :: 09:40
Печать  
Цитата:
Тут мало у кого DBF

уже понял что с DBF перспективы мало...
вечером буду перегонять базу в SQL
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
Bond
Full Member
***
Отсутствует



Сообщений: 106
Зарегистрирован: 01. Ноября 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #28 - 02. Апреля 2007 :: 09:40
Печать  
а код все равно не работает  Печаль
  

работай с умом, а не до ночи!
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Группировка "ВСЕ". Как?!!
Ответ #29 - 02. Апреля 2007 :: 10:20
Печать  
Ветку всю не помню Улыбка
поэтому :
На части  запросы разбивать пробовал?
типа что не работает?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 
ОтправитьПечать