Текущее время: Ср, июл 16 2025, 05:45

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


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

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


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

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