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

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Inner и outer join в одном select?
СообщениеДобавлено: Ср, фев 19 2020, 22:12 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 20 2019, 01:35
Сообщения: 38
Нужно сделать такую выборку (взято из ТЗ):

1. Все поля из /CCPM/D_BOREQ
2. Все поля из /CCPM/D_BOREQOBL
3. Заказ СО для ЗнО (EKKN.AUFNR) - одно поле
4. Все поля из IFLOT для заказов ММ.
Соединения таблиц:
/CCPM/D_BOREQ-REQUESTUUID = /CCPM/D_BOREQOBL-REQUESTUUID,
(EKKN-EBELN = /CCPM/D_BOREQOBL-OBLEBELN AND EKKN-EBELP = /CCPM/D_BOREQOBL-OBLEBELP)
ILOA-AUFNR = EKKN.AUFNR
IFLOT-ILOAN = ILOA.ILOAN


+есть ограничения всякие, но мне именно интересно как сам JOIN этих таблиц сделать всех.

Писал сначала всё просто через JOIN, но тогда была проблема - у некоторых /CCPM/D_BOREQOBL-OBLEBELN пустой и видимо не присоединялись остальные таблицы (ekkn,iloa,iflot).

А нужно так: /ccpm/d_boreqobl нужно брать всегда, даже если OBLEBELN пусто. (Т.е. из /CCPM/ таблиц всегда брать данные, а из таблиц ekkn,iloa,iflot, если есть связь.

Например в /CCPM/D_BOREQOBL:
REQUESTUUID OBLEBELN OBLEBELP
F40312313123 40000046 00010
F93939393155 40000046 00010
F55555555555 ________ 00000

А в EKKN
EBELN EBELP *остальные поля
40000045 00010 *остальные поля
40000046 00010 *остальные поля

То в результате должно быть 3 записи.
REQUESTUUID OBLEBELN OBLEBELP *остальные поля
F40312313 40000045 00010 *остальные поля
F93939393 40000046 00010 *остальные поля
F55555555 ________ 00000 *пустые поля

Пишу
Code:
SELECT (список полей) FROM /ccpm/d_boreq JOIN /ccpm/d_boreqobl ON (условие)
LEFT JOIN ekkn ON /ccpm/d_boreqobl~oblebeln = ekkn~ebeln AND /ccpm/d_boreqobl~oblebelp = ekkn~ebelp
JOIN iloa ON iloa~aufnr = ekkn~aufnr
JOIN iflot ON iflot~iloan = iloa~iloan


В итоге получается совсем не то, что надо. Можете подсказать как переписать такой селект?

И вообще я не совсем понимаю как такой запрос отрабатывает. В какой последовательности идут join'ы.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Inner и outer join в одном select?
СообщениеДобавлено: Ср, фев 19 2020, 22:59 
Ассистент
Ассистент

Зарегистрирован:
Пн, авг 13 2012, 10:16
Сообщения: 28
Два последних join замените тоже на left. Суть inner join - правая таблица всегда должна быть в результате, не зависимо от того с чем вы ее джойните.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Inner и outer join в одном select?
СообщениеДобавлено: Ср, фев 19 2020, 23:32 
Ассистент
Ассистент

Зарегистрирован:
Чт, июн 20 2019, 01:35
Сообщения: 38
jastfake написал(а):
Два последних join замените тоже на left. Суть inner join - правая таблица всегда должна быть в результате, не зависимо от того с чем вы ее джойните.


Кажется пробовал заменить два последних JOIN на LEFT JOIN.
Вроде стало тянуться слишком много избыточных данных. Днём проверю ещё раз.

Что можно сделать, если будет много данных и вследствие чего - дамп по нехватке памяти?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Inner и outer join в одном select?
СообщениеДобавлено: Ср, фев 19 2020, 23:49 
Ассистент
Ассистент

Зарегистрирован:
Пн, авг 13 2012, 10:16
Сообщения: 28
Тут надо конкретно анализировать, какие данные лишние и по ним добавлять доп фильтры, сходу сказать нельзя.

Какая версия системы? Если ABAP 7.5 и выше, то можно создать cds view c inner join и с ним сделать второй cds view с left join.


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

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


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

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


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

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