Текущее время: Ср, апр 24 2024, 10:35

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
 Заголовок сообщения: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 14:36 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, янв 14 2013, 10:37
Сообщения: 795
Пол: Мужской
Помогите кенгуру, делаю первый свой запрос:

Code:
SELECT
  usr02~bname
  usr02~class
  usracl~pname
  usr02~erdat
  usr02~trdat
INTO TABLE
  gs_snc FROM usr02
LEFT JOIN usracl ON
  usr02~bname = usracl~bname
WHERE
  usr02~USTYP EQ 'A' and
  usr02~UFLAG NE 64
ORDER by usr02~class usr02~bname.



Хочу добавить в него условие usracl~pname is null

Code:
IF P_OPTUPL is not initial.
  SELECT
  usr02~bname
  usr02~class
  usracl~pname
  usr02~erdat
  usr02~trdat
INTO TABLE
  gs_snc FROM usr02
LEFT JOIN usracl ON
  usr02~bname = usracl~bname
WHERE
  usr02~USTYP EQ 'A' and
  usr02~UFLAG NE 64 and
  [b]usracl~pname is null[/b]
ORDER by usr02~class usr02~bname.
ENDIF.


Получаю ошибку: "В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER."
Как же быть? Как переделать запрос? Спасибо!


Последний раз редактировалось RikoNw Чт, авг 04 2016, 16:10, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 15:55 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
проще удалить ненужные записи из результата,
а какая у вас версия sap_aba?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 16:06 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, янв 14 2013, 10:37
Сообщения: 795
Пол: Мужской
trop написал(а):
проще удалить ненужные записи из результата,
а какая у вас версия sap_aba?


SAP ABA 7.31, не хотелось бы усложнять код, чтобы самому не путаться, но видимо придется. То есть без ABAP не обойтись?


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 16:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
RikoNw: вы уверены, что у вас там будут нулловые значения у этого поля? Если вы не добавляли записи программно и если это поле не появилось в результате вашего расширения (а это сильно вряд ли), то там не будет null-значений. А будет там пустая строка. И тогда можно вставить usracl~pname = space в условие join-соединения вместо проблемной конструкции.
Или вы просто хотите получить все записи, для которых нет записи в usracl? если так, то надо переписать не используя left outer join, заменив его на not exist select pname from usracl и т.д.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Последний раз редактировалось Кодер Чт, авг 04 2016, 16:29, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 16:28 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
возможность добавить условие на правую таблицу left join появилась только в 740
при использовании строгой нотации (new opensql syntax)


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 16:28 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, янв 14 2013, 10:37
Сообщения: 795
Пол: Мужской
Кодер написал(а):
RikoNw: вы уверены, что у вас там будут нулловые значения у этого поля? Если вы не добавляли записи программно и если это поле не появилось в результате вашего расширения (а это сильно вряд ли), то там не будет null-значений. А будет там пустая строка. И тогда можно вставить usracl~pname = space в условие join-соединения вместо проблемной конструкции.


Поправил на

Code:
SELECT
  usr02~bname
  usr02~class
  usracl~pname
  usr02~erdat
  usr02~trdat
INTO TABLE
  gs_snc FROM usr02
LEFT JOIN usracl ON
  usr02~bname = usracl~bname and
[b] usracl~pname = space[/b]
WHERE
  usr02~USTYP EQ 'A' and
  usr02~UFLAG NE 64
ORDER by usr02~class usr02~bname.

Выводятся те же данные, что и в оригинальном запросе, только нужное поле ( usracl~pname ) для всех записей пустое :D


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 16:31 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
RikoNw опишите словами, что вы хотите получить. мой вариант отбирает по вашим условиям записи из usr02, для которых есть записи в usracl, у которых pname пустое( и да, left outer по факту тут не нужен, хватит и inner join).
повторюсь:
Или вы просто хотите получить все записи, для которых нет записи в usracl? если так, то надо переписать не используя left outer join, а заменив его на not exist select pname from usracl и т.д.

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 16:35 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, янв 14 2013, 10:37
Сообщения: 795
Пол: Мужской
Да, хочу именно все записи, для которых нет записи в usracl. Словами, это хочу узнать, у каких пользователей не присвоено SNC-имя.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER  Тема решена
СообщениеДобавлено: Чт, авг 04 2016, 16:38 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
Тех для кого у нет записи usracl
Code:
SELECT
usr02~bname
usr02~class
usr02~erdat
usr02~trdat
INTO TABLE
gs_snc FROM usr02
WHERE
not exists ( select pname
from usracl
where usracl~bname = usr02~bname ) and
usr02~USTYP EQ 'A' and
usr02~UFLAG NE 64
ORDER by usr02~class usr02~bname.

а вот тех, у кого имя не вбито - ваш запрос с pname = space

_________________
Там, где я рос, единственным развлечением было запоминать число «π».(С) Н. Стивенсон


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 16:48 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, янв 14 2013, 10:37
Сообщения: 795
Пол: Мужской
Code:
usr02~bname
  usr02~class
  usr02~erdat
  usr02~trdat
INTO TABLE
  gs_snc FROM usr02
WHERE
not exists ( select pname from usracl where usracl~bname = usr02~bname ) and
usr02~USTYP EQ 'A' and
usr02~UFLAG NE 64
ORDER by usr02~class usr02~bname.


Дамп =) DBIF_RSQL_INVALID_RSQL


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 16:57 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, янв 14 2013, 10:37
Сообщения: 795
Пол: Мужской
Попытаюсь разрулить это на этапе вывода...


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: В WHERE-условии не должны появляться поля из правой таблицы LEFT OUTER
СообщениеДобавлено: Чт, авг 04 2016, 17:00 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, янв 14 2013, 10:37
Сообщения: 795
Пол: Мужской
Получилось :D


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

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


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

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


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

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