Имя: Пароль:
1C
1С v8
Запросы: Разные странные результаты запросов
0 fedbka
 
25.07.12
14:36
Доброе день, уважаемые коллеги.

Пожалуйста просвятите почему запросы возвращают разный результат.

Запрос №1:

ВЫБРАТЬ
   1 КАК Поле1
ПОМЕСТИТЬ ВТ1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ2
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ3
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СУММА(ВТ2.Поле1) КАК Поле1,
   СУММА(ВТ3.Поле1) КАК Поле2
ИЗ
   ВТ2 КАК ВТ2
       ПОЛНОЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3
       ПО ВТ2.Поле2 = ВТ3.Поле2
   

Запрос №2

ВЫБРАТЬ
   1 КАК Поле1
ПОМЕСТИТЬ ВТ1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ2
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ3
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 3
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СУММА(ВТ2.Поле1) КАК Поле1,
   СУММА(ВТ3.Поле1) КАК Поле2
ИЗ
   ВТ2 КАК ВТ2
       ПОЛНОЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3
       ПО ВТ2.Поле2 = ВТ3.Поле2

СГРУППИРОВАТЬ ПО
   ЕСТЬNULL(ВТ2.Поле2, ВТ3.Поле2)


Результат первого запроса - НЕ ПУСТАЯ таблица с колонками "Поле1" и "Поле2" с единственной строкой со значениями NULL. Результат второго запроса - ПУСТАЯ таблица значений
1 fedbka
 
25.07.12
14:46
Обновленная версия:
Запрос №1


////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ3
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СУММА(ЕСТЬNULL(ВТ2.Поле1,0)) КАК Поле1,
   СУММА(ЕСТЬNULL(ВТ3.Поле1,0)) КАК Поле2
ИЗ
   ВТ2 КАК ВТ2
       ПОЛНОЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3
       ПО ВТ2.Поле2 = ВТ3.Поле2


Результат запроса - НЕПУСТАЯ таблица с колонками "Поле1" и "Поле2", с единственной строкой, заполненной значениями NULL. Результат запроса не совпадает с ожидаемым мной результатом - пустой таблицой значений с колонками "Поле1" и "Поле2".

Запрос №2:


ВЫБРАТЬ
   1 КАК Поле1
ПОМЕСТИТЬ ВТ1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ2
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ3
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СУММА(ЕСТЬNULL(ВТ2.Поле1,0)) КАК Поле1,
   СУММА(ЕСТЬNULL(ВТ3.Поле1,0)) КАК Поле2
ИЗ
   ВТ2 КАК ВТ2
       ПОЛНОЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3
       ПО ВТ2.Поле2 = ВТ3.Поле2

СГРУППИРОВАТЬ ПО
   ЕСТЬNULL(ВТ2.Поле2, ВТ3.Поле2)


Результат запроса - пустая таблица значений с колонками "Поле1" и "Поле2". Результат запроса совпадает с ожидаемым мною.
2 fedbka
 
25.07.12
14:47
(ИПИТЬ!!!) Обновленная версия:

Запрос №1


ВЫБРАТЬ
   1 КАК Поле1
ПОМЕСТИТЬ ВТ1
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ2
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ3
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 2
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СУММА(ЕСТЬNULL(ВТ2.Поле1,0)) КАК Поле1,
   СУММА(ЕСТЬNULL(ВТ3.Поле1,0)) КАК Поле2
ИЗ
   ВТ2 КАК ВТ2
       ПОЛНОЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3
       ПО ВТ2.Поле2 = ВТ3.Поле2


Результат запроса - НЕПУСТАЯ таблица с колонками "Поле1" и "Поле2", с единственной строкой, заполненной значениями NULL. Результат запроса не совпадает с ожидаемым мной результатом - пустой таблицой значений с колонками "Поле1" и "Поле2".

Запрос №2:


ВЫБРАТЬ
   1 КАК Поле1
ПОМЕСТИТЬ ВТ1
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ2
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 2
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   ВТ1.Поле1,
   ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КАК Поле2
ПОМЕСТИТЬ ВТ3
ИЗ
   ВТ1 КАК ВТ1
ГДЕ
   ВТ1.Поле1 = 2
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   СУММА(ЕСТЬNULL(ВТ2.Поле1,0)) КАК Поле1,
   СУММА(ЕСТЬNULL(ВТ3.Поле1,0)) КАК Поле2
ИЗ
   ВТ2 КАК ВТ2
       ПОЛНОЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3
       ПО ВТ2.Поле2 = ВТ3.Поле2

СГРУППИРОВАТЬ ПО
   ЕСТЬNULL(ВТ2.Поле2, ВТ3.Поле2)



Результат запроса - пустая таблица значений с колонками "Поле1" и "Поле2". Результат запроса совпадает с ожидаемым мною.
3 fedbka
 
26.07.12
08:32
up!
4 hhhh
 
26.07.12
09:52
я наоборот ожидаю что должна быть строка. То есть я за первый запрос.

Тем более второй запрос какой-то странный, СГРУППИРОВАТЬ по полям, которых нет в выборке. Удивительно, что он вообще работает.
5 fedbka
 
26.07.12
13:01
СГРУППИРОВАТЬ можно и по полям которых не в выборке... это не нарушает логику, там же наоборот - запрещено присутствие в выборке полей которые не участвуют в группировке...разве нет?
6 hhhh
 
26.07.12
13:37
(5) ну просто, получили выборку, начинаем ее группировать, а там даже и полей нет, по каким группируем. Может он поэтому строк не выдал, потому что выпал в осадок от этого сгруппировать?
7 fedbka
 
26.07.12
13:56
(6) Я хочу отметить что вопросы вызывает именно результат запроса №1, который выдает строку с NULL-ами в ячейках, по результату второго запроса как раз и нет никаких вопросов (по крайней мере для меня))
Ошибка? Это не ошибка, это системная функция.