Текущее время: Вс, июл 20 2025, 00:22

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: двойной OUTER JOIN
СообщениеДобавлено: Вт, дек 27 2005, 17:04 
Гость
Коллеги, вероятно, кому-нибудь из вас доводилось сталкиваться со следующей проблемой. Нужно получить данные из 2-х таблиц путем двойного использования LEFT OUTER JOIN: один раз JOIN делается с использованием в условии ON одного поля, а второй раз с использованием другого поля. В обоих случаях в качестве правой таблицы выступает одна и та же таблица.

Как в этом случае задать структуру для размещения результата этого SELECTа?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 17:17 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Поля в структуре для размещения результата по второму джойну обзовите как нибудь по другому, а в селекте переименовывайте поля как вам нужно

В структуре:
begin of str1,
...
field1 like tabl1-field,
a_field1 like tabl1-field,
...
end of str1.

select t1~field1 t2~field1 as a_field1
outer join table table1 as t1 on ...
outer join table table1 as t2 on ...
into corresponding fields of str1
...

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 17:27 
Гость
Я использую следующую конструкцию и по некоторым
соображениям не хотелось бы от нее отказываться...

SELECT *
FROM SUB AS A
LEFT OUTER JOIN ADR AS B ON
A~MANDT = B~MANDT AND A~ADRIDN = B~ADRIDN
AND B~ADRINDRCN = true
LEFT OUTER JOIN ADR AS C ON
A~MANDT = C~MANDT AND A~CORADRIDN = C~ADRIDN
AND C~ADRINDRCN = true
INTO CORRESPONDING FIELDS OF TABLE sql_res


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 17:40 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
А придется. Иначе как раскладывать поля полученного набора по полям в структуре?

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 17:51 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Можно ведь прямо указать источник и приемник. Правда, если структура не слишком большая...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 17:57 
Гость
Я думал, что есть какие-то правила именования по умолчанию...


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 17:58 
Гость
Что значит "прямо указать источник и приемник"?


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 18:00 
Гуру-модератор
Гуру-модератор
Аватара пользователя

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской
Anonymous написал(а):
Я думал, что есть какие-то правила именования по умолчанию...

насколько я знаю - нет
более того, нельзя написать что то вроде такого: select tab1~* tab2~f1

_________________
- Может ли настоящий мастер кунг-фу получить по морде?
- Настоящий мастер может все!


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 18:01 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
SELECT field1 field2 INTO (str-field1, str-field2) и т.д.


Последний раз редактировалось zaba Вт, дек 27 2005, 18:03, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 18:01 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
ну, естественно
SELECT a~field1...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: to zaba
СообщениеДобавлено: Вт, дек 27 2005, 18:04 
Гость
Имена полей как раз таки перечислять не хотелось бы...
Вы, видимо, недооцениваете людей вокруг...


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 18:27 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Ну не знаю, не знаю, всякое бывает.
А что, перечислять поля - плохой тон?
Простейший пример, когда перечисление полей полезно - это повысить производительность выборки данных (правда учитывая некоторые нюансы).


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 19:36 
Гость
zaba написал(а):
Ну не знаю, не знаю, всякое бывает.
А что, перечислять поля - плохой тон?
Простейший пример, когда перечисление полей полезно - это повысить производительность выборки данных (правда учитывая некоторые нюансы).


В рассматриваемой задаче требуется выбрать все поля, поэтому перечисление - только лишний код


Пометить тему как нерешенную
Вернуться к началу
  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт, дек 27 2005, 19:55 
Старший специалист
Старший специалист

Зарегистрирован:
Пт, мар 25 2005, 11:46
Сообщения: 282
Откуда: SPb
Jill написал(а):
zaba написал(а):
Ну не знаю, не знаю, всякое бывает.
А что, перечислять поля - плохой тон?
Простейший пример, когда перечисление полей полезно - это повысить производительность выборки данных (правда учитывая некоторые нюансы).


В рассматриваемой задаче требуется выбрать все поля, поэтому перечисление - только лишний код


Это явно не указано в вопросе.
Тем не менее, главное, что мы друг друга поняли:)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, дек 28 2005, 02:26 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Ср, июн 22 2005, 09:51
Сообщения: 208
Пол: Мужской
Jill написал(а):
zaba написал(а):
Ну не знаю, не знаю, всякое бывает.
А что, перечислять поля - плохой тон?


В рассматриваемой задаче требуется выбрать все поля, поэтому перечисление - только лишний код


Может такой вариант сойдет для "уменьшения кода" (взял из HELP-а)
Code:
DATA: WA_SPFLI    TYPE SPFLI,
          WA_FTAB(72) TYPE C,
          FTAB        LIKE TABLE OF WA_FTAB.

CLEAR FTAB.
FTAB = 'CITYFROM'. APPEND WA_FTAB TO FTAB.
FTAB = 'CITYTO'.   APPEND WA_FTAB TO FTAB.
SELECT DISTINCT (FTAB)
       INTO CORRESPONDING FIELDS OF WA_SPFLI
       FROM SPFLI
       WHERE
         CARRID   = 'LH'.
****
ENDSELECT.

_________________
С уважением, В.Ш.
4.6C


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

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


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

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


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

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