Текущее время: Пт, апр 19 2024, 09:32

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


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

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


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

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