Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Ошибка при использовании UNION ALL (число прочтений - 3076 )
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Ошибка при использовании UNION ALL
04. Июля 2008 :: 07:50
Печать  
Доброе время суток!
Пишу запрос из документов Реализация и ВозвратОтПокупателя. В обоих документах есть реквизит Контрагент, в документе реализация идентификатор SP1583, в возврате - SP1629. Запрос идет к вложенному запросу, где я по отдельности читаю эти два вида документов и объединяю с UNION.

SELECT
....
$ДокШапка.Контрагент as [Kонтрагент $Справочник.Контрагенты],
WHERE
Жур.IDDocDef = $ВидДокумента.Реализация
....

UNION ALL
....
$ДокШапка.Контрагент as [Kонтрагент $Справочник.Контрагенты],
WHERE
Жур.IDDocDef = $ВидДокумента.ВозвратОтПокупателя
....

Выдает ошибку: FAILED! ICommandText::Execute(): SQL: Column 'SP1629' is not found.
Когда удаляю эти поля, то ругань выходит уже на другие. Может я туплю, просто подобные запросы мне
уже приходилось писать но на SQL Server.
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Ошибка при использовании UNION ALL
Ответ #1 - 04. Июля 2008 :: 07:52
Печать  
Задай разные алиасы таблицам в обоих подзапросах.
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Ошибка при использовании UNION ALL
Ответ #2 - 04. Июля 2008 :: 07:55
Печать  
sadovnikov писал(а) 04. Июля 2008 :: 07:52:
Задай разные алиасы таблицам в обоих подзапросах.

Выдает тоже самое
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Ошибка при использовании UNION ALL
Ответ #3 - 04. Июля 2008 :: 07:56
Печать  
Весь запрос покажи. С секциями FROM.
И скажи, что есть SP1629.
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Ошибка при использовании UNION ALL
Ответ #4 - 04. Июля 2008 :: 07:59
Печать  
В обоих документах есть реквизит Контрагент, в документе реализация идентификатор SP1583, в возврате - SP1629 (в DD файле).


SELECT Фирма as [Фирма $Справочник.Фирмы], SUM(ОбщееКоличество), SUM(ОбщаяСумма) FROM (

SELECT
Жур.IDDocDef as Док_вид,
Жур.SP4056 as Фирма,
Жур.SP798 as [Проект $Справочник.Проекты],
$ДокШапка.СуммаВклНДС,
$ДокШапка.Контрагент as Контрагент,
1*$ДокТаблица.Количество as ОбщееКоличество,
1*ICASE($ДокШапка.СуммаВклНДС = 1, $ДокТаблица.Сумма,  $ДокТаблица.Сумма +  $ДокТаблица.СуммаНДС) as ОбщаяСумма
FROM
1SJourn as Жур
LEFT JOIN  $Документ.Реализация as ДокШапка on Жур.IDDoc = ДокШапка.IDDoc 
RIGHT JOIN $ДокументСтроки.Реализация as ДокТаблица on ДокШапка.IDDoc = ДокТаблица.IDDoc      
RIGHT JOIN $Справочник.Контрагенты as СправКонт on СправКонт.ID = $ДокШапка.Контрагент
WHERE
  Жур.Date BETWEEN :ДатаНачала~~ AND :ДатаКонца~~
  AND Жур.IDDocDef = $ВидДокумента.Реализация
  AND Жур.Closed = 1
  AND LEFT($СправКонт.ЮрФизЛицо,4) = $ВидСправочника36.СвоиЮрЛица
UNION ALL

SELECT
Жур.IDDocDef as Док_вид,
Жур.SP4056 as Фирма,
Жур.SP798 as [Проект $Справочник.Проекты],
$ДокШапка.СуммаВклНДС,
$ДокШапка.Контрагент as Контр,
-1*$ДокТаблица.Количество as ОбщееКоличество,
-1*ICASE($ДокШапка.СуммаВклНДС = 1, $ДокТаблица.Сумма,  $ДокТаблица.Сумма +  $ДокТаблица.СуммаНДС) as ОбщаяСумма
FROM
1SJourn as Жур
LEFT JOIN  $Документ.ВозвратОтПокупателя as ДокШапка on Жур.IDDoc = ДокШапка.IDDoc 
RIGHT JOIN $ДокументСтроки.ВозвратОтПокупателя as ДокТаблица on ДокШапка.IDDoc = ДокТаблица.IDDoc      
RIGHT JOIN $Справочник.Контрагенты as СправКонт on СправКонт.ID = $ДокШапка.Контрагент
WHERE
  Жур.Date BETWEEN :ДатаНачала~~ AND :ДатаКонца~~
  AND Жур.IDDocDef = $ВидДокумента.ВозвратОтПокупателя
  AND Жур.Closed = 1
  AND LEFT($СправКонт.ЮрФизЛицо,4) = $ВидСправочника36.СвоиЮрЛица
) as Req
GROUP BY Фирма
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Ошибка при использовании UNION ALL
Ответ #5 - 04. Июля 2008 :: 08:01
Печать  
Где ж у тебя алиасы разные-то? Например, ДокШапка присутствует в обоих подзапросам, но это рахные таблицы.
У метапарсера от этого башню рвёт. Сделай алиасы у разных таблиц разными.
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Ошибка при использовании UNION ALL
Ответ #6 - 04. Июля 2008 :: 08:05
Печать  
sadovnikov писал(а) 04. Июля 2008 :: 08:01:
Где ж у тебя алиасы разные-то? Например, ДокШапка присутствует в обоих подзапросам, но это рахные таблицы.
У метапарсера от этого башню рвёт. Сделай алиасы у разных таблиц разными.


С алиасами ступил, я подумал, что нужно колонке другой алиас задать ( Смущённый), заработало. Мдааа с dbf-ми многовато проблем.
Спасибо!
  
Наверх
 
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: Ошибка при использовании UNION ALL
Ответ #7 - 04. Июля 2008 :: 08:08
Печать  
DrunkProgrammer писал(а) 04. Июля 2008 :: 08:05:
Мдааа с dbf-ми многовато проблем.
Спасибо!


1С++ точно так же себя ведет и со скулем.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Ошибка при использовании UNION ALL
Ответ #8 - 04. Июля 2008 :: 08:13
Печать  
При UNION в присоединяемых таблицах(через UNION) в Fox должны отсутствовать
алиасы полей - они однозначно задаются первой таблицей.
Далее все операции(например типизация) после UNION должны выполняться во внешнем запросе -
т.е. все что в UNION - оформляется в подзапрос.
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Ошибка при использовании UNION ALL
Ответ #9 - 04. Июля 2008 :: 08:14
Печать  
Посмотрел еще раз свой запрос, который писал для SQL Server, действительно таблицы назвал там по разному, забыл просто.
  
Наверх
 
IP записан
 
DrunkProgrammer
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 128
Зарегистрирован: 28. Декабря 2007
Re: Ошибка при использовании UNION ALL
Ответ #10 - 04. Июля 2008 :: 08:22
Печать  
kiruha писал(а) 04. Июля 2008 :: 08:13:
При UNION в присоединяемых таблицах(через UNION) в Fox должны отсутствовать
алиасы полей - они однозначно задаются первой таблицей.
Далее все операции(например типизация) после UNION должны выполняться во внешнем запросе -
т.е. все что в UNION - оформляется в подзапрос.

Убрал алиасы полей во второй таблице и работает, правда с алиасами тоже работало, типизацию Фирмы я  делал во внешнем запросе.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать