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

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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