Имя: Пароль:
1C
 
Временная таблица VS вложенный запрос
0 forforumandspam
 
08.06.15
08:34
Добрый день всем. Платформа 8.2.18.61. Мозг перегрелся, я отказываюсь понимать логику работы программы. Почему два запроса, от которых я ожидаю получить одинаковый результат, дают совершенно разные результаты? Запрос на временных таблицах:


ВЫБРАТЬ
    КурсыВалют.Период,
    КурсыВалют.Валюта,
    КурсыВалют.Курс
ПОМЕСТИТЬ Врем
ИЗ
    РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
    КурсыВалют.Период МЕЖДУ &Дата1 И &Дата2
    И КурсыВалют.Валюта = &Валюта

СГРУППИРОВАТЬ ПО
    КурсыВалют.Валюта,
    КурсыВалют.Период,
    КурсыВалют.Курс
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Врем.Валюта,
    Врем.Курс
ИЗ
    Врем КАК Врем


Запрос с вложенным запросом:


ВЫБРАТЬ
    ВложенныйЗапрос.Валюта,
    ВложенныйЗапрос.Курс
ИЗ
    (ВЫБРАТЬ
        КурсыВалют.Период КАК Период,
        КурсыВалют.Валюта КАК Валюта,
        КурсыВалют.Курс КАК Курс
    ИЗ
        РегистрСведений.КурсыВалют КАК КурсыВалют
    ГДЕ
        КурсыВалют.Период МЕЖДУ &Дата1 И &Дата2
        И КурсыВалют.Валюта = &Валюта
    
    СГРУППИРОВАТЬ ПО
        КурсыВалют.Валюта,
        КурсыВалют.Период,
        КурсыВалют.Курс) КАК ВложенныйЗапрос



Не обращайте внимания на то, что это регистр сведений "курсы валют". Я специально переделал запрос, чтобы вы могли воспроизвести это у себя.
1 ДенисЧ
 
08.06.15
08:36
Совершенно разные - это как?
2 1Сергей
 
08.06.15
08:36
(1) +1
Посмотри свой РС и сравни, что куда не попало, а куда попало лишнее
3 Одинесю
 
08.06.15
08:38
Сравни результат из ВТ и ВЗ.
4 forforumandspam
 
08.06.15
08:40
(1) Для первого запроса результат такой: http://s019.radikal.ru/i600/1506/d4/92cc22b5963b.png

Для второго такой:
http://s009.radikal.ru/i309/1506/9c/64af12213a4f.png
5 forforumandspam
 
08.06.15
08:42
Меня вводит в ступор, почему при использовании временной таблицы группируется результат по этой самой временной таблице?
6 katc
 
08.06.15
08:42
Одинаковые результаты.
7 Провинциальный 1сник
 
08.06.15
08:43
Может ТС ожидает одинаковый порядок строк? А с чего вдруг?
8 SeraFim
 
08.06.15
08:44
ты в СКД проверяешь. Наверняка в настройках СКД у тебя что-то.
9 forforumandspam
 
08.06.15
08:46
Хоть один попробовал запустить оба запроса у себя?
А картинки с моими результатами хоть один из вас смотрел?

(8) Это не СКД, это результат из консоли запросов.
10 patria0muerte
 
08.06.15
08:46
Одинаковые результаты выдают... тестил на примере Курсов валют в УПП в консоли запросов.
11 Провинциальный 1сник
 
08.06.15
08:46
(9) Попробовал именно в консоли запросов. Одинаковые результаты.
12 Одинесю
 
08.06.15
08:47
У тебя второй запрос не группирует просто
13 фобка
 
08.06.15
08:49
(12) +1
14 forforumandspam
 
08.06.15
08:50
(12) Он и не должен группировать. Вот это и есть различие в результате.
15 Провинциальный 1сник
 
08.06.15
09:00
(14) То есть, вы считаете, что из временной таблицы по умолчанию "select distinct", а из подзапроса "select all"?
16 фобка
 
08.06.15
09:08
(5) в чем вопрос-то? Убери из варианта в ВТ секцию "СГРУППИРОВАТЬ ПО"
17 forforumandspam
 
08.06.15
09:12
(16) А если мне надо сгруппировать?
18 фобка
 
08.06.15
09:18
(17) значит группируй
19 forforumandspam
 
08.06.15
09:39
(18)
"- Положено мясо - ешь.
- Но оно не положено.
- Не положено - не ешь." - Да?
20 itlikbez
 
08.06.15
09:42
Группировка здесь вообще не при чем. Ни в первом, ни во втором случае она никак не влияет на результаты. Валюта+период - уникальный ключ. Группировка по уникальному ключу бессмысленна. (0) ты видимо параметры напутал.
21 forforumandspam
 
08.06.15
09:48
(20) РС Валюты я привёл как легко воссоздаваемый пример. Не надо цепляться именно к этому. А параметры на скриншотах видны - они одинаковые.
22 MrStomak
 
08.06.15
09:53
(21) Либо ты не те тексты запросов прилагаешь, либо консоль твоя - фуфло
23 itlikbez
 
08.06.15
09:58
(21) Сам попробуй на курсах валют еще раз.
24 MrStomak
 
08.06.15
10:00
Это похоже на поведене СКД - если поля нет в результате, то и в ВТ мы его не будем выбирать. Группировка при этом остаётся.
25 Vovan1975
 
08.06.15
10:03
сударь, таки может быть стоит и поле период включить в выводимые поля?
26 forforumandspam
 
08.06.15
10:03
Народ, неужели никто не запускал эти запросы у себя, чтобы проверить или опровергнуть. Я и так упростил свой запрос до невозможности, но с воспроизведением проблемы.
27 MrStomak
 
08.06.15
10:06
(26) Тебе куча народу сказала - результаты одинаковые
28 forforumandspam
 
08.06.15
10:08
(25) Мусье, я хочу получить выборку один раз и сгруппировать её, запихнуть в ВТ, и потом несколько раз использовать, каждый раз при разном составе колонок и ожидаю при разных наборах колонок иметь одинаковое количество строк. НО пилять, не получаю этого.
29 mehfk
 
08.06.15
10:10
перезайди в предприятие.
30 Vovan1975
 
08.06.15
10:10
(28) ты идиот чтоле?
Включи вывод периода и сравни результаты запросов
31 Лефмихалыч
 
08.06.15
10:11
(26) у меня абсолютно идентичный результат
у тебя результат разный потому, что в одном из враиантов группировки нет. Ее по факту нет, когда ты выполняещь запрос, не смотря на то, что в (0) она есть.
32 forforumandspam
 
08.06.15
10:12
Расширю свой вопрос:

Почему тогда вот такой запрос выдаёт такой результат:
33 К_Дач
 
08.06.15
10:13
У меня одинаковый результат и в с ВТ и с ВЗ
34 forforumandspam
 
08.06.15
10:16
Расширю свой вопрос:

Почему тогда вот такой запрос выдаёт такой результат:



ВЫБРАТЬ
    КурсыВалют.Период,
    КурсыВалют.Валюта,
    КурсыВалют.Курс
ПОМЕСТИТЬ Врем
ИЗ
    РегистрСведений.КурсыВалют КАК КурсыВалют
ГДЕ
    КурсыВалют.Период МЕЖДУ &Дата1 И &Дата2
    И КурсыВалют.Валюта = &Валюта

СГРУППИРОВАТЬ ПО
    КурсыВалют.Валюта,
    КурсыВалют.Период,
    КурсыВалют.Курс
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Врем.Валюта,
    Врем.Курс,
    NULL КАК Период
ИЗ
    Врем КАК Врем

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    Врем.Валюта,
    Врем.Курс,
    Врем.Период
ИЗ
    Врем КАК Врем



Результат этого:
http://s020.radikal.ru/i720/1506/d5/a959dc9ff719.png

По той-же логике временных таблиц, к четырём строкам должны быть присоединены 10. Но это не так?!?!?!?!
35 К_Дач
 
08.06.15
10:16
Что-то не так у тебя с консолью. Я проверял в консоли инструментов разработчика от Тормозита и в Запроснике 2.0 и в консоли Чистова - везде одинаково
36 К_Дач
 
08.06.15
10:18
В обработке выполнить запрос и посмотреть результат в отладчике не пробовал?
37 MrStomak
 
08.06.15
10:19
(34) Что за к четырём 10? Откуда берёшь это? Должны удвоиться строчки, это и видно на результате
38 Vovan1975
 
08.06.15
10:19
(34) во временной таблице 10 строк. В выводе твоей консоли 20. Все правильно.
39 forforumandspam
 
08.06.15
10:19
Я использовал две консоли. Стандартную, встроенную в конфигурацию и универсальную консоль отчетов 2.7.8 от Люлюк Евгения.
40 D_E_S_131
 
08.06.15
10:20
"По той-же логике временных таблиц, к четырём строкам должны быть присоединены 10" — forforumandspam, ты решил потроллить всех с утра что ли?
41 forforumandspam
 
08.06.15
10:20
(38) Тогда почему в первом запросе во временной таблице 10 строк, в консоли 4?
43 forforumandspam
 
08.06.15
10:21
(40) Не угадал.
45 Vovan1975
 
08.06.15
10:22
(41) потому что консоль твоя группирует вывод. Именно потому я грил чтобы включить период в выводимые строки.
Поройся уже в настройках консоли своей
46 MrStomak
 
08.06.15
10:22
(41) консоль ОТЧЕТОВ - тебе ни о чем не говорит?
47 MrStomak
 
08.06.15
10:22
Запрос в СКД уходит, вот и всё, ещё в (8)  предположили
50 Лефмихалыч
 
08.06.15
10:24
(34) >По той-же логике временных таблиц, к четырём строкам должны быть присоединены 10

это по какой-то твоей извращенной логике. На сомом деле к 10 строкам должно присоединиться 10. Что, собственно, и произошло.
51 Лефмихалыч
 
08.06.15
10:25
(37) он думает, что СГРУППИРОВАТЬ действует не только на временную таблицу, но всегда, когда бы он из веременной ни выбирал.Чувак под веществами явно
53 Лефмихалыч
 
модератор
08.06.15
10:28
Vovan1975, упырь свой мел
54 Vovan1975
 
08.06.15
10:31
(51) у него в консоли стоит группировка полей. Именно поэтому выборка из временной таблицы в (0) возвращает меньше строк нежели выборка из временной таблицы в (34)
55 koreav
 
08.06.15
10:37
(0) у меня результаты одинаковые, наверное что-то у вас с консолью запросов
56 К_Дач
 
08.06.15
10:40
Все, теперь понятно. Ты пользуешься консолью отчетов. Если в консоли отчетов выполнить запрос с ВТ без группировки - результат полностью совпадет по количеству строк с результатов ВЗ. Если с группировкой - то количество строк будет меньше, чем в результате ВЗ. Консоль отчетов транслирует текст запроса в СКД. Читай внимательно (24)
57 forforumandspam
 
08.06.15
10:41
(46) Единственный правильный ответ. В этом и закралась подляна. Я и ожидал 10 строк в случае запроса с ВТ, а у меня их 4!!!! Как много зависит от правильно выбранного инструмента.
58 MrStomak
 
08.06.15
10:42
(57) Тебе об этом сказали в (8) (восьмом) посте, а ты развел крики "Не, это консоль запросов!!"
59 К_Дач
 
08.06.15
10:43
(57) высыпаться надо на выходных )))) :D
60 forforumandspam
 
08.06.15
10:44
(59) Совет дельный, но не для этого случая. Тут всё-таки неправильный инструмент взял.
61 H A D G E H O G s
 
08.06.15
10:46
Вот это на трешняк я попал..
62 forforumandspam
 
08.06.15
10:48
(61) Уже опоздал ;) А трешняк у меня с самого утра.
63 Лефмихалыч
 
08.06.15
10:49
(61) pff!
Трэш, угар и содомия сегодня вон там: Бизнес процес