|
Запросы: Разные странные результаты запросов | ☑ | ||
---|---|---|---|---|
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-ами в ячейках, по результату второго запроса как раз и нет никаких вопросов (по крайней мере для меня))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |