Текущее время: Чт, июл 24 2025, 01:24

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


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

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


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

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