Текущее время: Пт, мар 29 2024, 16:00

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Фильтрация выборки при LEFT OUTER JOIN
СообщениеДобавлено: Вт, сен 20 2016, 14:53 
Ассистент
Ассистент

Зарегистрирован:
Вт, сен 13 2016, 20:18
Сообщения: 49
В хелпе сказано, что при LEFT OUTER JOIN я не могу использовать правую таблицу в блоке WHERE. Собственно у меня возник вопрос, почему?

вот картинка из хелпа:
Code:
SELECT * FROM Table1 LEFT OUTER JOIN Table2 ON Table1~D = Table2~D.

Code:
Table 1                      Table 2
|----|----|----|----|        |----|----|----|----|----|
| A  | B  | C  | D  |        | D  | E  | F  | G  | H  |
|----|----|----|----|        |----|----|----|----|----|
| a1 | b1 | c1 | 1  |        | 1  | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1  |        | 3  | e2 | f2 | g2 | h2 |
| a3 | b3 | c3 | 2  |        | 4  | e3 | f3 | g3 | h3 |
| a4 | b4 | c4 | 3  |        |----|----|----|----|----|
|----|----|----|----|

                    \        /
                     \      /
                      \    /
                       \  /
                        \/
    Left Outer Join
    |----|----|----|----|----|----|----|----|----|
    | A  | B  | C  | D  | D  | E  | F  | G  | H  |
    |----|----|----|----|----|----|----|----|----|
    | a1 | b1 | c1 | 1  | 1  | e1 | f1 | g1 | h1 |
    | a2 | b2 | c2 | 1  | 1  | e1 | f1 | g1 | h1 |
    | a3 | b3 | c3 | 2  |NULL|NULL|NULL|NULL|NULL|
    | a4 | b4 | c4 | 3  | 3  | e2 | f2 | g2 | h2 |
    |----|----|----|----|----|----|----|----|----|


Что плохого в запросе:
Code:
SELECT * FROM Table1 LEFT OUTER JOIN Table2 ON Table1~D = Table2~D WHERE Table2~D ne 3.
По идее могло бы выдать:
Code:
Left Outer Join
    |----|----|----|----|----|----|----|----|----|
    | A  | B  | C  | D  | D  | E  | F  | G  | H  |
    |----|----|----|----|----|----|----|----|----|
    | a1 | b1 | c1 | 1  | 1  | e1 | f1 | g1 | h1 |
    | a2 | b2 | c2 | 1  | 1  | e1 | f1 | g1 | h1 |
    | a3 | b3 | c3 | 2  |NULL|NULL|NULL|NULL|NULL|
    | a4 | b4 | c4 | 3  |NULL|NULL|NULL|NULL|NULL|
    |----|----|----|----|----|----|----|----|----|


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фильтрация выборки при LEFT OUTER JOIN  Тема решена
СообщениеДобавлено: Вт, сен 20 2016, 15:58 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пн, мар 28 2005, 15:38
Сообщения: 1246
2 GeneralLao: а вы всегда спорите с аксиомами? Ну решили разработчики языка abap, что так нельзя. И - установили такое правило.
А потом, с версии 7.40, решили что это правило неправильное и - отменили его.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фильтрация выборки при LEFT OUTER JOIN
СообщениеДобавлено: Вт, сен 20 2016, 16:37 
Ассистент
Ассистент

Зарегистрирован:
Вт, сен 13 2016, 20:18
Сообщения: 49
Кодер написал(а):
2 GeneralLao: а вы всегда спорите с аксиомами? Ну решили разработчики языка abap, что так нельзя. И - установили такое правило.
А потом, с версии 7.40, решили что это правило неправильное и - отменили его.

Попросили помочь почему джоин не компилится, не нашел что сказать кроме как: так в хелпе и в тексте ошибки написано
Вот и решил может такая операция идологически неправильна, и я чего-то не знаю.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фильтрация выборки при LEFT OUTER JOIN
СообщениеДобавлено: Ср, сен 21 2016, 09:51 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Пт, сен 23 2005, 11:11
Сообщения: 963
вероятно из-за вопроса ДО или ПОСЛЕ left join применять предикат на правую таблицу

подумай лучше над этим -
в hdb для left outer join при добавлении правых предикатов:
- если отсутствует правый предикат is null, то join превратится в inner join с выполнением предикатов до join
- если есть правый предикат is null, то left outer join сохранится и предикаты выполнятся после join


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

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


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

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


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

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