Текущее время: Пт, авг 01 2025, 01:18

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Ограниченность языка SQL?
СообщениеДобавлено: Чт, мар 29 2007, 13:21 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской
не могу поверить, не ужели в ABAP нельзя написать элементарный запрос на соединение 2-х таблиц стандартными способами?
вот так

SELECT a.* b.* FROM table1 a, table2 b WHERE a.id=b.id
???
Неужели только через JOIN?

А если 3 таблицы соеденять, так это вообще в ABAP будет вложенные JOIN?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ограниченность языка SQL?
СообщениеДобавлено: Чт, мар 29 2007, 13:50 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 24 2005, 15:55
Сообщения: 296
Пол: Мужской
Что касаемо Open SQL то - да.
Ну это только начало... :)

Ну а вообще, попробуй посмотреть в сторону Native SQL.
Может что-то там и понравится.

_________________
С уважением, Гараничев Игорь


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ограниченность языка SQL?
СообщениеДобавлено: Чт, мар 29 2007, 13:57 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Igor Garanichev написал:
Ну а вообще, попробуй посмотреть в сторону Native SQL.
Может что-то там и понравится.

с теми ограничениями что там есть - навряд ли :twisted:

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Ограниченность языка SQL?
СообщениеДобавлено: Чт, мар 29 2007, 14:03 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, окт 24 2005, 15:55
Сообщения: 296
Пол: Мужской
ArmAnn написал:
с теми ограничениями что там есть - навряд ли :twisted:


Ну тогда остаётся только свыкаться с этой средой разработки. Хотя и на ABAP можно писать шедевры. :)

_________________
С уважением, Гараничев Игорь


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 29 2007, 14:30 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской
жаль...
придется свыкнуться с мыслью о недоступности простоты стандартного языка SQL-92


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 29 2007, 14:35 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
divan написал:
придется свыкнуться с мыслью о недоступности простоты стандартного языка SQL-92


Вот, почитайте:
http://sapboard.ru/forum/viewtopic.php?t=17407


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, мар 29 2007, 14:50 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской
Цитата:


Спасибо, почитал... удручён...

Я то 5 лет под Oracle писал... теперь вы можете понять мое возмущение.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, мар 30 2007, 00:42 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Почитай еще о том, как join в SAP'е работает на самом деле. Будет еще интереснее :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб, апр 28 2007, 15:51 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, авг 18 2004, 09:17
Сообщения: 477
Откуда: Москва
Пол: Мужской
Пономарев Артем написал:
Почитай еще о том, как join в SAP'е работает на самом деле. Будет еще интереснее :)

и как он "на самом деле" работает?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 02 2007, 11:25 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 16:09
Сообщения: 202
divan написал:
жаль...
придется свыкнуться с мыслью о недоступности простоты стандартного языка SQL-92



а ракурс предварительно создавать не судьба ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 02 2007, 11:37 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Дмитрий написал:
и как он "на самом деле" работает?

1. The first table is scanned.
2. The result is stored in a temporary results table.
3. The temporary results table is sorted by the join columns of the following join step.
4. The next table that still exists is scanned.
5. The existing temporary results table is joined with the new table.
6. The result is stored in a new temporary results table.
7. This temporary results table is sorted by the join columns of the following join step.
8. The old temporary results table is deleted.
9. If there are more tables, the procedure is repeated from step 4.

The last temporary results table is the results table that the user wants.


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Пономарев Артем написал:
1. The first table is scanned.
2. The result is stored in a temporary results table.
3. The temporary results table is sorted by the join columns of the following join step.
4. The next table that still exists is scanned.
5. The existing temporary results table is joined with the new table.
6. The result is stored in a new temporary results table.
7. This temporary results table is sorted by the join columns of the following join step.
8. The old temporary results table is deleted.
9. If there are more tables, the procedure is repeated from step 4.

The last temporary results table is the results table that the user wants.


Это общее описание алгоритма join'а в СУБД.
SAP сам join'ы не делает.

А ограничения такие:
Цитата:
At least one comparison must be specified after ON.

Individual comparisons may be joined using AND only.

All comparisons must contain a column in the database table or the view dbtab_right on the right-hand side as an operand.

The following additions not be used: NOT, LIKE, IN.

No sub-queries may be used.

For outer joins, only equality comparisons (=, EQ) are possible.

If an outer join occurs after FROM, the join condition of every join expression must contain at least one comparison between columns on the left-hand and the right-hand side.

In outer joins, all comparisons that contain columns as operands in the database table or the view dbtab_right on the right-hand side must be specified in the corresponding join condition. In the WHERE condition of the same SELECT command, these columns are not allowed as operands.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, май 02 2007, 13:16 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
sibrin написал:
Это общее описание алгоритма join'а в СУБД.

В СУБД, слава богу, JOIN'ы работают не так, как пишет SAP. Т.е. не только так :).
sibrin написал:
SAP сам join'ы не делает.

Ну так. Однако SAP всегда использует sort merge join. О чем, собственно, и пишет в on-line help'е, который я цитировал. Что не есть хорошо, а очень даже наоборот.
Хотя тут я, возможно, неправ. Собственно это и была претензия к SAP join'ам. Если есть кому поправить/уточнить - буду рад.
sibrin написал:
А ограничения такие:

Help читать все умеют. Да и разговор не про то.

UPD: про "не про то" я погорячился. В тему убогости open SQL как раз :)


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, май 03 2007, 10:58 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Пономарев Артем написал:
Help читать все умеют.


К сожалению, не все.
Вот эта цитата
Цитата:
1. The first table is scanned.
...........

относится к SAP DB и представляет из себя абстрактное словесное описание того, как делается join. Никакого отношения к реализации алгоритма join'а, а тем более к SAP WebAS это не имеет.

Open SQL не диктует оптимизатору базы данных, какую стратегию использовать для join'ов. Запретить использовать hash join можно на уровне базиса в тр. DB17.


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

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Цитата:
относится к SAP DB...

В хелпе об этом ни слова.
Цитата:
... абстрактное словесное описание того, как делается join. Никакого отношения к реализации алгоритма join'а...

При чем здесь реализация алгоритма, если разговор о самом алгоритме?
Более того, это описание никак не может являться абстрактным, т.к. абсолютно не соответсвует действительности в 2 из 3 вариантов алгоритма.
Цитата:
Open SQL не диктует оптимизатору базы данных, какую стратегию использовать для join'ов. Запретить использовать hash join можно на уровне базиса в тр. DB17.

Противоречия не наблюдаем?

Да, согласен, в хелпе по ABAP о JOIN'е ни слова, кроме общего алгоритма. Который, однако, более всего соответсвует sort merge join'у. Здесь же читаем - The join is performed in ABAP with a sort-merge-join logic.

Эти два факта позволили мне в свое время сделать вывод о явном указании оптимизатору СУБД использовать sort merge join.

Вот за DB17 спасибо. Щас гляну.

UPD: Глянул. Не понял каким образом можно запретить hash join. Там же, как я увидел, обработка сообщений DB'шных. Не более того.

UPD2: Глянул лучше. Да, таки можно. Однако хинт USE_MERGE никто не отменял. Эх, как бы планы выполнения СУБДшные глянуть...
Более того, в той системе, где я работаю HASH_JOIN_ENABLED стоит в FALSE. Что, опять таки, свидетельствует о моей возможной правоте.


Последний раз редактировалось Пономарев Артем Чт, май 03 2007, 12:06, всего редактировалось 2 раз(а).

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

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


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

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


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

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