Текущее время: Пт, июл 25 2025, 06:48

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Связать три таблицы в одном select
СообщениеДобавлено: Пн, окт 06 2008, 11:25 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
В селекте нужно связать 1-ю таблицу с 3-й через 2-ю.
Выбрать поля только из 1-й и наложить условие из 3-й.
Связь между 1й и 2й : 1 к N.
Связь между 2й и 3й : N к 1.

Правильно ли я делаю постановку селекта?
Правильно ли использую JOIN и INNER JOIN

SELECT a~f1 a~f2
INTO CORRESPONDING FIELDS OF TABLE it_out
FROM rbkp AS a
JOIN rseg AS b
ON a~belnr = b~belnr
INNER JOIN ekko AS c
ON b~ebeln = c~ebeln
WHERE a~xblnr IN s_xblnr
AND a~stblg = ' '
AND a~rbstat <> 2
AND a~blart = 'RE'
AND ( c~bsart = 'UNB' OR c~bsart = 'UN1' OR c~bsart = 'UN2' )
.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 06 2008, 11:31 
Специалист
Специалист

Зарегистрирован:
Чт, окт 26 2006, 16:44
Сообщения: 149
Откуда: Москва
JOIN -- это сокращенная форма INNER JOIN. Т.е. это по сути одно и то же. В результате данного селекта у вас выберется N одинаковых строк. Можно исопльзовать SELECT DISTINCT как вариант.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 06 2008, 11:33 
Специалист
Специалист

Зарегистрирован:
Пт, сен 05 2008, 08:08
Сообщения: 134
Пол: Женский
В данном случае м.б. целесообразнее использовать EKBE? :)


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 06 2008, 11:34 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
Так и есть, селект визуально верный, но записей получается
действительно N -штук. А в остальном то хоть верно?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 06 2008, 11:36 
Специалист
Специалист

Зарегистрирован:
Чт, окт 26 2006, 16:44
Сообщения: 149
Откуда: Москва
SCORPION_Z написал(а):
А в остальном то хоть верно?

Если подходить чисто формально, то верно. Но вообще говоря, данный селект будет довольно медленно и стоит поискать обходные пути.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 06 2008, 11:36 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
Yellow Raven написала:
В данном случае м.б. целесообразнее использовать EKBE? :)


Может быть. Пишу без ТЗ. А с логистикой знаком пару недель как.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн, окт 06 2008, 11:39 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
vakito написал(а):
SCORPION_Z написал(а):
А в остальном то хоть верно?

Если подходить чисто формально, то верно. Но вообще говоря, данный селект будет довольно медленно и стоит поискать обходные пути.


Может и так. Сейчас для меня главное завести работу. А вот 1я и 3я таблица никак не связана, кроме как через 2ю. Возможно селект нужно бы было разбить на части.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связать три таблицы в одном select
СообщениеДобавлено: Пн, окт 06 2008, 13:06 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
SCORPION_Z написал(а):
FROM rbkp AS a
JOIN rseg AS b
ON a~belnr = b~belnr



правильнее:
Code:
        FROM rbkp AS a
        JOIN rseg AS b
          ON a~belnr = b~belnr
        and a~gjahr = b~gjahr



Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связать три таблицы в одном select
СообщениеДобавлено: Пн, окт 06 2008, 13:47 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
SCORPION_Z написал(а):
Выбрать поля только из 1-й и наложить условие из 3-й.

В самой фразе заложено WHERE с подзапросом!

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Связать три таблицы в одном select  Тема решена
СообщениеДобавлено: Пн, окт 06 2008, 16:01 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
Rokhay написал:
SCORPION_Z написал(а):
FROM rbkp AS a
JOIN rseg AS b
ON a~belnr = b~belnr



правильнее:
Code:
        FROM rbkp AS a
        JOIN rseg AS b
          ON a~belnr = b~belnr
        and a~gjahr = b~gjahr



Я кстати, так и сделал. В моем вопросе был немного устаревший вариант...


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

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


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

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


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

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