|
Временная таблица 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
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |