Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Объединение двух ВТ регистров остатков (число прочтений - 2790 )
dunkpi
Junior Member
**
Отсутствует



Сообщений: 23
Зарегистрирован: 03. Июля 2007
Пол: Мужской
Объединение двух ВТ регистров остатков
07. Ноября 2007 :: 16:46
Печать  
   Добрый день! Подскажите пожалуйста, как обычно обходятся ситуации подобные моей, когда необходимо объединить две таблицы остатков. Целый день бьюсь, ей богу... Например, вот запрос:

|SELECT *
|FROM
|      (SELECT
|            Рег1.Товар [Товар $Справочник.Запчасти]
|            ,Рег1.КвоОстаток КвоОстаток
|      FROM
|            $РегистрОстатки.Резерв(:ДатаКонца~,,,Товар,Кво)) Рег1
|
|LEFT JOIN
|
|        (SELECT
|            Рег2.Товар [Тов $Справочник.Запчасти]
|            ,Рег2.КвоОстаток КвоОст
|      FROM
|            $РегистрОстатки.ОстаткиЗапчасть(:ДатаКонца~,,,Товар,Кво)) Рег2
|
|ON Рег1.Товар = Рег2.Тов

Ах, да, ошибка, разумеется: "The column prefix 'Рег1' does not match with a table name or alias name used in thе..."
Заранее спасибо всем откликнувшимся.
  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Объединение двух ВТ регистров остатков
Ответ #1 - 07. Ноября 2007 :: 17:52
Печать  
ИМХО:
1)У тебя не UNION - не объединение 2-х запросов поэтому левую часть подцепляй в первом запросе - не надо оборачивать в еще один select
2) Типизацию делай только в первом запросе

Код
Выбрать все
|SELECT
|		 Рег1.Товар [Товар $Справочник.Запчасти]
|		,Рег1.КвоОстаток as КвоОстаток1
|		,Рег2.КвоОстаток as КвоОстаток2
|	FROM
|		$РегистрОстатки.Резерв(:ДатаКонца~,,,Товар,Кво)) Рег1
|
|LEFT JOIN
|	SELECT
|		Рег2.Товар as Товар
|		,Рег2.КвоОстаток КвоОстаток
|	FROM
|		$РегистрОстатки.ОстаткиЗапчасть(:ДатаКонца~,,,Товар,Кво) as Рег2
|ON Рег1.Товар = Рег2.Товар
 

  
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Объединение двух ВТ регистров остатков
Ответ #2 - 07. Ноября 2007 :: 18:13
Печать  
А почему бы и не юнионом?
Выбрать Остаток - Резерв СвободныйОстаток
Из (
Выбрать остаток, 0 из Остатки
Юнион алл
Выбрать 0, резерв из Резервы
)
  

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



Сообщений: 23
Зарегистрирован: 03. Июля 2007
Пол: Мужской
Re: Объединение двух ВТ регистров остатков
Ответ #3 - 08. Ноября 2007 :: 07:37
Печать  
     leshik, по Вашему способу не получается, разумеется ругается на то что "Рег2" непонятный алиас...
    Насколько я понял, джойном тут сделать нельзя. Но хоть убейте, не понимаю как можно две таблицы остатков соединить юнионом. Пожалуйста, можно поподробнее?
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Объединение двух ВТ регистров остатков
Ответ #4 - 08. Ноября 2007 :: 07:48
Печать  
Ну тебе ж Вадимко уже подсказал.
Код
Выбрать все
SELECT
|		Рег1.Товар [Товар $Справочник.Запчасти]
|	     ,0 as ОстаткиЗП
|		,Рег1.КвоОстаток ОстатокРезерв
|	FROM
|		$РегистрОстатки.Резерв(:ДатаКонца~,,,Товар,Кво)) Рег1
|
|UNION ALL
|
|SELECT
|		Рег2.Товар [Тов $Справочник.Запчасти]
|		,Рег2.КвоОстаток ОстаткиЗП
|	     , 0 as   ОстатокРезерв
|	FROM
|		$РегистрОстатки.ОстаткиЗапчасть(:ДатаКонца~,,,Товар,Кво)) Рег2
 


примерно так.
Если тебе надо иметь разность (или сумму) этих остатков, то делаешь так:
Код
Выбрать все
SELECT
(ОстаткиЗП-ОстатокРезерв) as НужныйМнеОстаток
FROM
(
_тут_верхний_запрос_
) as Резерв
 


но в этом случае из внутреннего юниона вынеси типизацию товара во внешний селект
  
Наверх
 
IP записан
 
dunkpi
Junior Member
**
Отсутствует



Сообщений: 23
Зарегистрирован: 03. Июля 2007
Пол: Мужской
Re: Объединение двух ВТ регистров остатков
Ответ #5 - 08. Ноября 2007 :: 08:33
Печать  
    Большое спасибо! Я просто думал, может  можно как-то без последующего сворачивания... Ладно, видать не судьба. Спасибо!
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Объединение двух ВТ регистров остатков
Ответ #6 - 08. Ноября 2007 :: 08:50
Печать  
Какого сворачивания? Если ты имеешь ввиду по товару, то добавь в конце GROUP BY Товар
а в селекте сделай SUM((ОстаткиЗП-ОстатокРезерв))  as НужныйМнеОстаток
  
Наверх
 
IP записан
 
dunkpi
Junior Member
**
Отсутствует



Сообщений: 23
Зарегистрирован: 03. Июля 2007
Пол: Мужской
Re: Объединение двух ВТ регистров остатков
Ответ #7 - 09. Ноября 2007 :: 09:12
Печать  
   А если усложнить задачу: В первом регистре поле товар - типа Справочник. Запчасти (определённого то бишь), а во втором - типа Справочник (неопределённого). Можно ли сделать такой юнион?
  
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Объединение двух ВТ регистров остатков
Ответ #8 - 09. Ноября 2007 :: 09:51
Печать  
Попробуй так. В первом запросе из Юниона:
Код
Выбрать все
($ВидСправочника36.Запчасти+Рег1.Товар) as Товар 


во втором так и оставляешь:
Код
Выбрать все
Рег2.Товар as Товар 



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