Текущее время: Ср, июн 18 2025, 10:07

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 08:23 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
хм...может быть

ORACLE 8.1.6.0.0 у меня...
у кого как?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 09:31 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
EGF написал(а):
Я получал точно такой же дамп.
А может, дело не в версии SAP, в версии БД?


БД здесь ни причем. Open SQL обрабатывает SAP: преобразовывает его в Native SQL, и уже затем в таком виде передает в БД.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 10:20 
Почетный гуру
Почетный гуру

Зарегистрирован:
Вт, авг 17 2004, 10:45
Сообщения: 550
Откуда: SAP_BASIS 640
Так-то оно так, но алгоритм преобразования Open SQL в Native SQL зависит от БД. Поэтому вполне возможна ситуация, когда "что для MS хорошо, то для Oracle - смерть". И в этой ситуации SAP может рисовать дамп для одной БД и не рисовать для другой.
У меня, например, тоже Oracle стоит.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 10:53 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
По идее, все рэнджесы раскладываются в элементарные условия вида
"(FIELD1 = VALUE 1 OR FIELD1 BETWEEN VALUE2 AND VALUE3 OR FIELD1 > VALUE4) AND NOT FIELD1 = VALUE5".
Версия БД вроде бы не должна иметь значения, т.к. синтаксис SQL используется базовый.

Но у меня БД - MS SQL.

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 11:58 
Гость
111 написал(а):
По идее, все рэнджесы раскладываются в элементарные условия вида
"(FIELD1 = VALUE 1 OR FIELD1 BETWEEN VALUE2 AND VALUE3 OR FIELD1 > VALUE4) AND NOT FIELD1 = VALUE5".
Версия БД вроде бы не должна иметь значения, т.к. синтаксис SQL используется базовый.

Но у меня БД - MS SQL.

Почти правда. Рейндж разложится в простые условия, только соединены они будут не по AND а OR. За счет этого могут быть кое-какие не очень приятные спецэфекты :cry:
СУБД в таком разрезе несколько непричем


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 12:16 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Кодер написал(а):
111 написал(а):
По идее, все рэнджесы раскладываются в элементарные условия вида
"(FIELD1 = VALUE 1 OR FIELD1 BETWEEN VALUE2 AND VALUE3 OR FIELD1 > VALUE4) AND NOT FIELD1 = VALUE5".
Версия БД вроде бы не должна иметь значения, т.к. синтаксис SQL используется базовый.

Но у меня БД - MS SQL.

Почти правда. Рейндж разложится в простые условия, только соединены они будут не по AND а OR. За счет этого могут быть кое-какие не очень приятные спецэфекты :cry:
СУБД в таком разрезе несколько непричем


У меня они и связаны по OR.
Положительные условия связываются между собой, конечно, по OR.
А вот с отрицательными вся совокупность положительных условий связывается по AND. И между собой, понятно, отрицательные связываются по AND.
RANGES - интервал.
Имеет место быть сложение множеств значений. Одни значения прибавляются, другие вычитаются - получаем итоговое множество значений.
"Значение поля лежит либо в интервале А, либо в интервале В, но не в интервале С и не в интервале D".

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 12:37 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
всё это интересно и познавательно...однако какая то причина должна быть :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 14:22 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Чт, сен 09 2004, 10:49
Сообщения: 95
Откуда: 4.6C
для своего случая , в качестве альтернативы воспользовался
generate subroutine pool ...
где и генерирую нужный мне селект. правда , это вроде как более громоздко :( , но работает.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, ноя 11 2004, 17:37 
Гость
111 написал(а):
У меня они и связаны по OR.
Положительные условия связываются между собой, конечно, по OR.
А вот с отрицательными вся совокупность положительных условий связывается по AND. И между собой, понятно, отрицательные связываются по AND.
RANGES - интервал.
Имеет место быть сложение множеств значений. Одни значения прибавляются, другие вычитаются - получаем итоговое множество значений.
"Значение поля лежит либо в интервале А, либо в интервале В, но не в интервале С и не в интервале D".


Фига. Все строчки в рейндже объединяются по OR вне зависимости от наличия NOT и в объединение дают единое условие. Можешь проверить.


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 11:29 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Кодер написал(а):
111 написал(а):
У меня они и связаны по OR.
Положительные условия связываются между собой, конечно, по OR.
А вот с отрицательными вся совокупность положительных условий связывается по AND. И между собой, понятно, отрицательные связываются по AND.
RANGES - интервал.
Имеет место быть сложение множеств значений. Одни значения прибавляются, другие вычитаются - получаем итоговое множество значений.
"Значение поля лежит либо в интервале А, либо в интервале В, но не в интервале С и не в интервале D".


Фига. Все строчки в рейндже объединяются по OR вне зависимости от наличия NOT и в объединение дают единое условие. Можешь проверить.


Сам-то пробовал?
Много, конечно, в SAPе маразма встречается. Но до такого даже они не додумались. Логически подумай - какой был бы смысл в рэйнджесах, если бы все условия без разбора соединялись по OR?

Пробуй, проверяй, наслаждайся.
===================
SE16
Таблица TSTCT (первая попавшаяся).
Транзакция ST05 - включаем SQL-трассировку этой таблицы.
В SE16 для поля TCODE набираем следующее ограничение:

SIGN = 'I'.
AAAAAAAAAAAAAAAAAAAA - FFFFFFFFFFFFFFFFFFFFFFFF
GGGGGGGGGGGGGGGGGG - ZZZZZZZZZZZZZZZZZ

Добавляем отрицательных условий (SIGN = 'E')
FFFFFFFFFFFFFFFFFFFFFFFFFFF
EEEEEEEEEEEEEEEEEEEEEEE

Делаем выборку.
Идем в трассировщик, смотрим трэйс и наслаждаемся:
================================
SQL Statement

SELECT
"SPRSL" AS c ,"TCODE" AS c ,"TTEXT" AS c
FROM
"TSTCT"
WHERE
( "TCODE" BETWEEN @P000 AND @P001 OR "TCODE" BETWEEN @P002 AND @P003 ) AND
NOT "TCODE" IN ( @P004 , @P005 ) /* R3:/1BCDWB/DBTSTCT:1179 */ /*Dynamic
SQL statement no cursor, upto 200, conn. 0:2*/

Variable

A0(CH,20) = GGGGGGGGGGGGGGGGGGGG
A1(CH,20) = ZZZZZZZZZZZZZZZZZZZZ
A2(CH,20) = AAAAAAAAAAAAAAAAAAAA
A3(CH,20) = FFFFFFFFFFFFFFFFFFFF
A4(CH,20) = EEEEEEEEEEEEEEEEEEEE
A5(CH,20) = FFFFFFFFFFFFFFFFFFFF

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 14:39 
Гость
Ха.. Это не условие NOT, это операция исключения. Просто о разных вещах говорили. Я имел ввиду. что при использовании операторов OPTION = 'NE' и прочее фигня может получится.
:oops:


Принять этот ответ
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, ноя 12 2004, 14:43 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, сен 23 2004, 18:43
Сообщения: 1556
Откуда: Москва
Кодер написал(а):
Ха.. Это не условие NOT, это операция исключения. Просто о разных вещах говорили. Я имел ввиду. что при использовании операторов OPTION = 'NE' и прочее фигня может получится.
:oops:


SIGN - в переводе "знак отрицательности". Я в этом смысле имел ввиду отрицательность. Хотя, конечно, тоже был не совсем точен - "отрицательные интервалы", а не "отрицательные условия". Для краткости так говорил ("условия не вхождения в отрицательные интервалы" - больно длинно).

_________________
Hе иди по течению, не иди против течения - иди поперек него, если хочешь достичь берега.
Слова Ванталы. Дела Ванталы


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 27 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB