|
Разный результат запроса на MS SQL и PostrgreSQL | ☑ | ||
---|---|---|---|---|
0
Дантес
16.12.11
✎
11:41
|
Доброго времени суток, уважаемые.
Имеется следующий код: МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ВременнаяТаблицаГрупп = Новый Запрос; ВременнаяТаблицаГрупп.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; ТекстЗапросаВР = "ВЫБРАТЬ | ТаблицаГрупп.Группа КАК Группа |ПОМЕСТИТЬ врТаблицаГрупп |ИЗ | &ТаблицаГрупп КАК ТаблицаГрупп"; ВременнаяТаблицаГрупп.УстановитьПараметр("ТаблицаГрупп", ТаблицаГрупп); ВременнаяТаблицаГрупп.Текст = ТекстЗапросаВР; ВременнаяТаблицаГрупп.Выполнить(); мВременнаяТаблицаГрупп = Новый Запрос; мВременнаяТаблицаГрупп.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; мТекстЗапросаВР = "ВЫБРАТЬ | мТаблицаГрупп.Группа КАК Группа |ПОМЕСТИТЬ врмТаблицаГрупп |ИЗ | &мТаблицаГрупп КАК мТаблицаГрупп"; мВременнаяТаблицаГрупп.УстановитьПараметр("мТаблицаГрупп", мТаблицаГрупп); мВременнаяТаблицаГрупп.Текст = мТекстЗапросаВР; мВременнаяТаблицаГрупп.Выполнить(); ПроверкаГрупп = Новый Запрос; ПроверкаГрупп.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; ТекстЗапроса = "ВЫБРАТЬ | СУММА(ВЫБОР | КОГДА врТаблицаГрупп.Группа = врмТаблицаГрупп.Группа | ТОГДА 0 | ИНАЧЕ 1 | КОНЕЦ) КАК Признак |ИЗ | врТаблицаГрупп КАК врТаблицаГрупп | ПОЛНОЕ СОЕДИНЕНИЕ врмТаблицаГрупп КАК врмТаблицаГрупп | ПО врТаблицаГрупп.Группа = врмТаблицаГрупп.Группа" ; ПроверкаГрупп.Текст = ТекстЗапроса; РезультатЗапроса = ПроверкаГрупп.Выполнить(); Результат = РезультатЗапроса.Выгрузить(); Первая и вторая временная таблица содержит группы номенклатуры (родителей) Конкретный пример: В первой временной таблице содержится одна запись. Во второй временной таблице содержится ноль записей. После выполнения итогового запроса получаем (таблица значений Результат ): на файловой версии БД Результат содержит одну запись на MS SQL Результат содержит одну запись на PostgreSQL Результат содержит ТРИ записи (одна правильная и две пустые) Не могу понять в чем дело. Подскажет хотя бы в каком направлении копать. Заранее благодарю. |
|||
1
суицид
16.12.11
✎
11:57
|
какая версия платформы, субд? зачем пушкина убил?
|
|||
2
Дантес
16.12.11
✎
12:00
|
(1) 1С:Предприятие 8.2 (8.2.13.219)
СУБД PostgreSQL 9.0.2 и 9.0.4 Вопросов много задавал. |
|||
3
Затейник
16.12.11
✎
12:16
|
(2) есть возможность запустить на слонике версии 8.4.3-3.1C ?
какой там будет результат ? Кстати, откуда взяли постгри 9.0.2 ? на сайте только тестовый 9.0.3-3.1C, может в этом косяк |
|||
4
МишельЛагранж
16.12.11
✎
12:46
|
что, трансляция разная?
|
|||
5
Дантес
16.12.11
✎
13:51
|
(3) на данный момент нет
админ брал отсюда ftp://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/Debian/6.0/ Говорит что там лежит уже пропатченая под 1С СУБД. Не верить ему у меня оснований нет, тем более что 1С работает и запросы в 3-5 экранов выполняются без проблем, да и вообще по работе особых нареканий нет. За исключением некоторых моментов (один из них описан в сабже) |
|||
6
mikecool
16.12.11
✎
13:56
|
была у меня ветка про сортировку - в скуле и постгри по-умолчанию сортировки отличаются
|
|||
7
mikecool
16.12.11
✎
13:56
|
+6 так что - учитывай все и тестируй
|
|||
8
braynt
16.12.11
✎
13:58
|
PostgreSQL неправильно обрабатывает полное соединение
|
|||
9
Дантес
16.12.11
✎
14:43
|
(6) ссылочкой на ветку поделишься? Не могу твой профиль открыть чтобы темы посмотреть.
(8) и как быть? |
|||
10
Дантес
16.12.11
✎
14:45
|
(8) как-то же работают люди на PostgreSQL c 1C. Сомневаюсь что у них у всех отсутствует полное соединение.
|
|||
11
braynt
16.12.11
✎
15:41
|
(9) Периписать запрос!
|
|||
12
Дантес
16.12.11
✎
16:10
|
(11) обрадовал
|
|||
13
Дантес
16.12.11
✎
16:11
|
самое интересное что полное соединение есть в запросах типовой
|
|||
14
ILM
гуру
16.12.11
✎
16:21
|
(0) Ну все верно, разные базы СУБД, разные версии, всё влияет на результат)))
|
|||
15
Дантес
16.12.11
✎
16:28
|
(14) гениальный ответ! )))))
|
|||
16
pumbaEO
16.12.11
✎
16:45
|
(13) У клиента Oracle, во все типовые запросы приходиться вставлять принудительную сортировку.
|
|||
17
Reset
16.12.11
✎
16:46
|
(15) Почему не рассматривается вариант взять дистрибутив от 1С?
|
|||
18
Reset
16.12.11
✎
16:47
|
(5) "Не верить ему у меня оснований нет, тем более что 1С работает"
в (0) - не основание? |
|||
19
Дантес
19.12.11
✎
12:01
|
(17) а что это даст? народ утверждает что ПОЛНОЕ СОЕДИНЕНИЕ в PostgreSQL не работает. Какая в таком случае разница, откуда дистрибутив?
Лично у тебя есть база на PostgreSQL и в ней корректно работает ПОЛНОЕ СОЕДИНЕНИЕ? |
|||
20
igork1966
19.12.11
✎
12:06
|
(19) я так и не понял... у тебя патченный дистрибутив Postgress или нет?
|
|||
21
Дантес
19.12.11
✎
12:22
|
дистрибутив брался отсюда
ftp://updates.etersoft.ru/pub/Etersoft/Postgres@Etersoft/stable/Debian/6.0/ |
|||
22
igork1966
19.12.11
✎
12:29
|
(21) ТаблицаГрупп.Группа и мТаблицаГрупп.Группа тип ссылка?
|
|||
23
Дантес
19.12.11
✎
13:17
|
(22) да
|
|||
24
Reaper_1c
19.12.11
✎
13:19
|
Нефиг пользоваться левыми сборками.
|
|||
25
Дантес
19.12.11
✎
14:12
|
(24) т.е. на сборке от 1С (с сайта) будет гарантированно работать?
|
|||
26
Дантес
20.12.11
✎
10:58
|
(24) Поставил не левую - не работает.
|
|||
27
braynt
20.12.11
✎
11:29
|
(12) Так что сложно запрос переписать?
|
|||
28
Дантес
20.12.11
✎
12:01
|
(27) в целом нет, но таких запросов у меня несколько и есть довольно объемные. Но дело даже не в этом. Не понятно почему PosgreSQL выдает такой результат и почему 1С не информировала о том что ПОЛНОЕ СОЕДИНЕНИЕ в PostgreSQL не работает (или информировала?). Звонил в тех. поддержку, порекомендовали поставить последний релиз платформы и попробовать на нем и если не заработает то тогда пример кода с описанием работы. Ради эксперимента конечно поставлю, но думается мне что результат будет тот же.
|
|||
29
sapphire
20.12.11
✎
12:07
|
(28) Настройте технологический журнал и посмотрите в какую конструкцию диалекта PostgreSQL выраждается Ваша писанина.
|
|||
30
Затейник
20.12.11
✎
12:14
|
Использование конструкции полное внешнее соединение
В СУБД PostgreSQL реализована только частичная поддержка FULL OUTER JOIN (ERROR:"FULL JOIN is only supported with mergejoinable join conditions"). Для реализации полной поддержки FULL OUTER JOIN при работе 1С:Ghtlghbznbz 8 c PostgreSQL подобный запрос трансформируется в другую форму с эквивалентным результатом, однако эффективность использования конструкции ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ снижается. В связи с этим не рекомендуется использовать ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ при работе с PostgreSQL. В большинстве случаев без использования этой конструкции можно обойтись, переписав исходный запрос. |
|||
31
sapphire
20.12.11
✎
12:27
|
(30) О том и речь.
|
|||
32
Дантес
20.12.11
✎
13:35
|
(30) Спасибо за информацию.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |