Текущее время: Пт, июл 18 2025, 09:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Помогите разобраться с ~
СообщениеДобавлено: Пт, июл 25 2014, 13:07 
Начинающий
Начинающий

Зарегистрирован:
Пн, июл 09 2012, 12:55
Сообщения: 23
Код из документации

Code:
TYPES: BEGIN OF sflight_tab_type,
         carrid TYPE sflight-carrid,
         connid TYPE sflight-connid,
         fldate TYPE sflight-fldate,
       END OF sflight_tab_type.

DATA sflight_tab TYPE TABLE OF sflight_tab_type.

SELECT carrid connid fldate
       FROM sflight
       INTO CORRESPONDING FIELDS OF TABLE sflight_tab
       WHERE seatsocc > sflight~seatsmax.


непонятно вот это
Code:
WHERE seatsocc > sflight~seatsmax

а именно - почему seatsocc без алиаса таблицы, а seatsmax - разыменовывается через ~


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Помогите разобраться с ~
СообщениеДобавлено: Пт, июл 25 2014, 13:19 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 21 2012, 22:00
Сообщения: 248
pincet написал(а):
Код из документации

Code:
TYPES: BEGIN OF sflight_tab_type,
         carrid TYPE sflight-carrid,
         connid TYPE sflight-connid,
         fldate TYPE sflight-fldate,
       END OF sflight_tab_type.

DATA sflight_tab TYPE TABLE OF sflight_tab_type.

SELECT carrid connid fldate
       FROM sflight
       INTO CORRESPONDING FIELDS OF TABLE sflight_tab
       WHERE seatsocc > sflight~seatsmax.


непонятно вот это
Code:
WHERE seatsocc > sflight~seatsmax

а именно - почему seatsocc без алиаса таблицы, а seatsmax - разыменовывается через ~


Если seatsocc и sflight-seatsmax имеют один и тот же тип (или могут быть неявно приведены к одному типу) - никакого криминала, просто некая переменная или константа сравнивается с компонентом структуры


Последний раз редактировалось Ice_age Пт, июл 25 2014, 13:20, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с ~
СообщениеДобавлено: Пт, июл 25 2014, 13:20 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
pincet: Тильда используется в этом случае чтобы сравнить значения полей в рамках одной строки. Т.е. по-русски этот запрос звучит как: отбери мне все записи таблицы sflight , в которых, в рамках одной записи, количество занятых мест seatsocc превышает количество мест всего seatsmax

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с ~
СообщениеДобавлено: Пт, июл 25 2014, 14:01 
Начинающий
Начинающий

Зарегистрирован:
Пн, июл 09 2012, 12:55
Сообщения: 23
не совсем ясна логика (недавно в abap, после t-sql сложновато)
понятно, что должны сравниваться поля одной записи (или это неочевидно в abap?)
почему не where seatsocc>seatsmax или flights~seatsocc>seatsmax или flights~seatsocc>flights~seatsmax нельзя?
Или через - разыменовать?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Помогите разобраться с ~
СообщениеДобавлено: Пт, июл 25 2014, 14:11 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1257
Цитата:
понятно, что должны сравниваться поля одной записи (или это неочевидно в abap?)

Да. Это не очевидно. Цитата из хелпа по условиям в Where
Цитата:
The logical expression compares the content of the column col1, corresponding to the relational operator operator, with the content of one of the following operands:

An ABAP data object dobj as a host variable
Another column col2 of a database table specified after a FROM In this case col2 must be specified using the column selector as dbtab~comp or tabalias~comp.
A scalar subquery subquery


Обычно алиасы используются в select с join. Реже в select в которых нужно сравнивать столбцы одной строки друг с другом.

Без алиаса сравнить бы не получилось. Алиас в вашем примере указан 1 раз чтобы не загромождать пример, скорее всего. Т.е. если вы у обоих полей его укажете - все нормально будет

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


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с ~
СообщениеДобавлено: Сб, июл 26 2014, 14:29 
Менеджер
Менеджер
Аватара пользователя

Зарегистрирован:
Чт, мар 09 2006, 10:12
Сообщения: 565
Откуда: Волгодонск
Пол: Мужской
pincet написал(а):
а именно - почему seatsocc без алиаса таблицы, а seatsmax - разыменовывается через ~

Скорее всего дело в том что без тильды переменную seatsmax можно трактовать как переменную программы, а не sql запроса
вот чтоб убрать эту не однозначность и надо писать sflight~seatsmax...

_________________
Изображение Попытка не пытка


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

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


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

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


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

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