Текущее время: Пн, июл 28 2025, 02:37

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
 Заголовок сообщения: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Вт, фев 19 2013, 22:01 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
Доброго дня господа !

Имею исходные таблицы
T1
F1 F2
1 A
2 B

T2
F1 F2 F3
1 C 3
2 D 4

T3
F3 F4
3 E
5 F

Необходимо получить результат
T1.F1 T1.F2 T2.F2 T3.F4
1 A C E
2 B D Null

Скрипт может выглядит
select T1~F1
T1~F2
T2~F2
T3~F4
from T1
left join T2 on T2.F1=T1.F1
left join T3 on T3.F3=T2.F3
Hе могу установить двойное взаимо-подчинение объектов.

Подскажите как правильно изобразить .

P.S. - Native Sql пользоваться ПОЛИТИЧЕСКИ нельзя ......


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 00:24 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
HOME_X написал(а):
Hе могу установить двойное взаимо-подчинение объектов

Конечно не можете, если таблица T2 не будет основной.

Если таблица T1 должна быть основной, то задача решается в 3 шага:
1.T2 +left join T3 в it1
2.Получение данных из T1 в it2
3.Объединение данных из it2 и it1

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 01:59 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
Принято !
Так и делаю, полагал может есть системные решения
и по их незнанию - занимаюсь таким слепливание.

Спасибо !


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 17:41 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
К сожалению на умозрительном примере и рекомендации могут быть отдаленные от реалий. А на практике, на примере Удава , если за T2 принять таблицу MARA (справочник материалов с огромной номенклатурой), то уже на первом шаге может "лопнуть" it1, т.е. получим дамп из-за нехватки памяти (случай из жизни).

Я предпочитаю придерживаться подхода без внутренних таблиц, ненужные данные не нужно и брать!
Я бы разбил запрос на части:
1. T1 join T2 left join T3 ...into itab
2. T1 not in T2 ...appending itab

Однако, в реальности могут быть и кластерные таблицы, тогда плакали наши джойны, всё через вн. таблицы.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 18:05 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Parazit написал:
А на практике, на примере Удава , если за T2 принять таблицу MARA (справочник материалов с огромной номенклатурой), то уже на первом шаге может "лопнуть" it1, т.е. получим дамп из-за нехватки памяти (случай из жизни).

Я предпочитаю придерживаться подхода без внутренних таблиц, ненужные данные не нужно и брать!
Я бы разбил запрос на части:
1. T1 join T2 left join T3 ...into itab
2. T1 not in T2 ...appending itab


В твоем случае упадет, если MARA назначить T1 ;)

Правильное решение об объединении таблиц можно принять только после того, как они известны.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 18:25 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
Удав написал(а):
Parazit написал:
...
Я бы разбил запрос на части:
1. T1 join T2 left join T3 ...into itab
2. T1 not in T2 ...appending itab


В твоем случае упадет, если MARA назначить T1 ;)

Правильное решение об объединении таблиц можно принять только после того, как они известны.

В моем варианте можно обойтись без внутренних таблиц (select... endselect), просто показал новичку "appending" (вдруг не знает).
Во-вторых, если уж T1 основная, то я подразумеваю хоть какой то разумный "where". А вот для T2 уже "join" является ограничением, т.е. выберется только нужное. В твоем случае это ограничение отпадает, да и само существование п.3 означает избыточность данных в любой из вн. таблиц.
В третьих, Удав, не заводи баркас! :)
Ты свой вариант показал, я свой. Пусть выбирает, что ему по душе.

_________________
"For all entries" не в SAP-ах, "for all entries" в головах! :)


Последний раз редактировалось Parazit Ср, фев 20 2013, 18:31, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 18:30 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Parazit написал:
если уж T1 основная, то я подразумеваю хоть какой то разумный "where".

Я тоже подразумевал разумный where для T2 ;)
Parazit написал:
В третьих, Удав, не заводи баркас!

:pivo:

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 20:53 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
Принято - учту при отработке !

Немного смутили СКОБКИ из примера
Полагал что аналогичный вариант также приемлем для диррективы LEFT JOIN
Code:
SELECT c~carrname p~connid f~fldate
       INTO CORRESPONDING FIELDS OF TABLE itab
       FROM ( ( scarr AS c
         INNER JOIN spfli AS p ON p~carrid   = c~carrid
                              AND p~cityfrom = p_cityfr
                              AND p~cityto   = p_cityto )
         INNER JOIN sflight AS f ON f~carrid = p~carrid
                                AND f~connid = p~connid ).


Спасибо !


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 21:58 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
HOME_X написал(а):
Полагал что аналогичный вариант также приемлем для диррективы LEFT JOIN

Нет, неприемлим.
Как и то, что в примере нет ограничения выборки для основной таблицы sflight, которую к тому же засунули в join.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 22:09 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
А простейшие действия - типа "+" ,"-", "&&"
выполнять над полями можно ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Ср, фев 20 2013, 22:22 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
Нельзя, да и зачем? :?
БД нужна R/3 только для хранения и выборки данных.
Большая часть возможностей современных СУБД интерфейсом БД SAP не используется. Причины описал Parazit в другом сообщении.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Пт, фев 22 2013, 15:27 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
Удав написал(а):
Нельзя, да и зачем?

Чтобы разгрузить пользовательский код.

Удав написал(а):
Большая часть возможностей современных СУБД интерфейсом БД SAP не используется.

Т.е. операция SELECT - это просто импорт данных + некоторые легкие операции

Верно понимаю ?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Пт, фев 22 2013, 16:19 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, окт 06 2005, 16:44
Сообщения: 3080
Откуда: Москва
HOME_X написал(а):
Т.е. операция SELECT - это просто импорт данных + некоторые легкие операции

Верно понимаю ?

Да.

_________________
С уважением,
Удав.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Пт, фев 22 2013, 16:44 
Ассистент
Ассистент

Зарегистрирован:
Пт, янв 25 2013, 17:37
Сообщения: 44
Спасибо ....

P.S. ФУФ .... печально !


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Запрос с двумя подчиненными таблицами
СообщениеДобавлено: Пт, фев 22 2013, 16:59 
Модератор
Модератор
Аватара пользователя

Зарегистрирован:
Пт, июн 16 2006, 00:43
Сообщения: 1686
Откуда: Москва <-> Красноярск
Пол: Мужской
Такую выборку можно записать в один запрос даже с учетом крайне ограниченного синтаксиса Open SQL. Только его эффективность будет ниже плинтуса. И структура результирующей таблицы будет избыточной.
Можно джойнить таблицы сами с собой и использовать подзапросы NOT IN. Но это уже БДСМ какой-то выйдет :)


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

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


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

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


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

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