Текущее время: Сб, июл 19 2025, 21:16

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


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

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


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

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