Текущее время: Вс, июл 27 2025, 17:26

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


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

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


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

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